前提・実現したいこと
数値が最大のタプルごとを取り出したい
発生している問題・エラーメッセージ
関数rectは画像から抽出した矩形領域の情報がタプルとして入っていて[x,y,width,height]の順に複数入っています。
ここから、widthが最大のタプルだけをprintしたいのですがどうすればいいのでしょうか?
該当のソースコード
python
1import cv2 2import numpy as np 3 4 5image = cv2.imread('適当な画像を絶対パスで記入してください') 6 7def find_rect_of_target_color(image): 8 hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV_FULL) 9 h = hsv[:, :, 0] 10 s = hsv[:, :, 1] 11 mask = np.zeros(h.shape, dtype=np.uint8) 12 mask[((h < 180) | (h > 210)) & (s > 128)] = 255 13 contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 14 rects = [] 15 for contour in contours: 16 approx = cv2.convexHull(contour) 17 rect = cv2.boundingRect(approx) 18 rects.append(np.array(rect)) 19 rect = max(rects, key=(lambda x: x[2] * x[3])) 20 print(rect) 21 return rects 22 23find_rect_of_target_color(image)
試したこと
自分で定義した関数rectは画像から抽出した矩形領域の情報が入っていて[x,y,width,height]の順に入っています。
ここから、widthが最大のタプルだけをprintしたいのですがどうすればいいのでしょうか?
上記のコードを実行するとたくさんのタプルがprintされてしまいます
rect = max(rects, key=(lambda x: x[2] * x[3]))
上記のコードでwidthが最大のタプルを引き出せると思っていたのですが、小さいタプルから大きいタプルに整列されただけでした。
補足情報(FW/ツールのバージョンなど)
ここのサイトを参考にしています。
https://qiita.com/odaman68000/items/ae28cf7bdaf4fa13a65b
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。