実現したいこと
輪郭抽出ののち描画した、外接矩形の各辺の長さを求めたいです。
下のコードで描画したそれぞれの外接矩形の各頂点座標がrects
に格納されていることはわかるのですが、
そこから座標情報を取り出して各外接矩形の辺の長さを求める繰り返し処理を行うコードがわかりません、、
どなたか教えていただけると幸いです。
該当のソースコード
python
1import cv2 2import numpy as np 3 4# 画像の読み込み 5img = cv2.imread('C:/Users/ito/Anaconda3/envs/Sample/pic/testimg/IMG_0070.jpg') 6 7# リサイズ 8#img = cv2.resize(img, dsize=None, fx=0.2, fy=0.2) 9 10# グレースケールに変換 11gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 12 13# 二値化 14_, binary = cv2.threshold(gray, 89, 255, cv2.THRESH_BINARY_INV) 15 16#輪郭抽出 17_, contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 18 19# 面積が小さい輪郭削除 20area = img.shape[0] * img.shape[1] 21contours = list(filter(lambda cnt:10< cv2.contourArea(cnt), contours)) 22 23# 外接矩形に変換 24# drawContours() に渡す輪郭は int 型である必要があるため、astype(int) でキャストすること。 25rects = [cv2.boxPoints(cv2.minAreaRect(cnt)).astype(int) for cnt in contours] 26 27# 外接矩形を描画 28cv2.drawContours(img, rects, -1, (0, 255, 0), 1) 29 30#外接矩形の長さを算出 31 32 33# 画像を保存 34cv2.imwrite('C:/Users/ito/Anaconda3/envs/Sample/pic/result/minAR0070_89.jpg', img) 35#cv2.imshow('sample', binary) 36#cv2.waitKey(0) 37#cv2.destroyAllWindows 38 39print(rects)
開発環境
windows7 professional
python3.6.5
opencv3.3.1

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/21 15:12
2018/10/21 17:30
2018/10/22 00:49