image.jpg を2値化した画像中の白い部分の一番面積の大きい部分を取り出すためのプログラムを書いております。
コード中の maxcontour の値(class 'numpy.ndarray')をfor文の外側に持っていきたいのですが、迷走しております。
解決法、またはアドバイスを頂けたら幸いです。
よろしくお願いします。
main.py
1## 画像読み込み 2img = cv2.imread('image.jpg') 3 4## グレースケールに変換 5img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 6 7## 二値化と大津処理 8threshold, img_bw = cv2.threshold( 9 img_gray, 0, 255, 10 cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU 11) 12 13##境界を検出して描画する 14contours, _ = cv2.findContours(img_bw.astype(np.uint8), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 15 16'--------問題個所--------' 17##一番大きい面積をとりだす 18maxarea = 0 19for contour in contours : 20 ## pixel数 21 area = cv2.contourArea(contour) 22 if maxarea < area : 23 maxarea = area 24 maxcontour = contour 25 26#エッジの書き込み 27img_contour = cv2.drawContours(img, maxcontour, -1, (0,255,0), 5) 28cv2.imwrite('counter.jpg', img_contour) 29'-----------------------'
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。