実現したいこと
・回転を考慮した外接矩形の描画
・ノイズ除去
実現したいことは上記の2つです。
よろしくお願い致します。
発生している問題・エラーメッセージ
該当のソースコード
python
1import cv2 2import numpy as np 3 4#画像の読み込み 5img =cv2.imread('C:/Users/ito/Anaconda3/envs/Sample/pic/testimg/IMG_0644.jpg') 6 7#画像のリサイズ 8img = cv2.resize(img, (1008,756)) 9 10#画像の大きさを取得 11height, width, channels = img.shape 12image_size = height * width 13 14#グレースケール化 15gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 16 17#二値化処理 18ret, dst = cv2.threshold(gray, 168, 255, cv2.THRESH_BINARY) 19 20#輪郭抽出 21imgEdge, contours, hierarchy = cv2.findContours(dst, 1, 2) 22 23#外接矩形 24recs = np.zeros((len(contours), 8), dtype=np.float32) 25for i, cnt in enumerate(contours): 26 rect = cv2.minAreaRect(cnt) 27 box = cv2.boxPoints(rect) 28 for j, _box in enumerate(box): 29 box[j] = list(map(int, _box)) 30 rec = np.array((box[0][0], box[0][1], box[1][0], box[1][1], 31 box[2][0], box[2][1], box[3][0], box[3][1])) 32 recs[i] = rec 33 34 area = cv2.contourArea(cnt) 35 #小さな輪郭の場合は除く 36 if area <800: 37 continue 38 39 #画像全体の占める領域は除外する 40 if image_size * 0.99 < area: 41 continue 42 43 44 rst = cv2.drawContours(img, contours, -1, (0,0,255), 2) 45print(recs) 46cv2.imwrite('C:/Users/ito/Anaconda3/envs/Sample/pic/result/minAR0644_168.jpg', rst)
開発環境
windows7 professional
python3.6.5
opencv3.3.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/20 08:33
2018/10/20 08:41
2018/10/20 08:46