発生している問題
マスク画像を作成したいが、マスクしたい物体の一部が以下のように画像からがはみ出ているときに塗りつぶしできない。
最終的には黒線も入るようなマスク画像を作成したい。
該当のソースコード
python
1import cv2 2import numpy as np 3 4def edges_img(img): 5 canny_img = cv2.Canny(image=img, threshold1=127, threshold2=127) 6 7 kernel = np.ones((3, 3), np.uint8) 8 dilation = cv2.dilate(canny_img,kernel,iterations = 1) 9 #dilation=~dilation 10 11 contours, hierarchy = cv2.findContours(dilation, cv2.RETR_EXTERNAL , cv2.CHAIN_APPROX_NONE) 12 mask = np.zeros((img.shape[0],img.shape[1])) 13 14 for i in range(len(contours)): 15 if hierarchy[0][i][3] == -1: 16 cv2.drawContours(mask, contours, i, 255, -1) 17 18 return mask 19 20if __name__=='__main__': 21 img=cv2.imread('sample.png') 22 img=edges_img(img) 23 cv2.imwrite("hoge.png",img)
試したこと
contoursに底辺の座標を追加
塗りつぶしの仕方を変更
回答1件
あなたの回答
tips
プレビュー