前提・実現したいこと
抽出した輪郭の情報からマスク画像を作成したいです。
発生している問題・エラーメッセージ
解答していただいた方のおかげで、マスク画像を作成できるようになったのですが、別の画像で試した見た結果正しくマスク画像が生成されませんでした。
エッジ検出がうまくいっていたので、輪郭抽出部分・マスク画像作成部分に原因があるのは確かなのですが、理由がわかりません。
該当のソースコード
python
1import numpy as np 2import cv2 3import matplotlib.pyplot as plt 4 5#関数定義 6def cannyprocess(img): 7 edges = cv2.Canny(img,100,200) 8 cv2.imwrite("canny\can_img.png",edges)#エッジ画像保存 9 can_img = cv2.imread("canny\can_img.png")#エッジ画像の読み込み 10 return can_img 11 12def contourprocess(img): 13 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 14 image, contours, hierarchy = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 15 return contours 16 17def maskgenerate(img): 18 back = np.zeros_like(img) 19 cont = contourprocess(cannyprocess(img)) 20 mask = cv2.fillConvexPoly(back, cont[0], color=(255, 255, 255)) 21 cv2.imwrite("mask\mask.png",mask) 22 return mask 23 24#関数定義 25 26img = cv2.imread("base\hurricane_1e8e060c71635d9c72b776820991d419.png",0)#元画像読み込み 27 28#print(contourprocess(cannyprocess(img))) 29 30maskgenerate(img)
試したこと
補足情報(FW/ツールのバージョンなど)
python 3.6.8
opencv 3.4.2
回答1件
あなたの回答
tips
プレビュー