やりたいこと
以下のurlのようなコインの画像を二値化したものがあります。
それをpythonを用いてmatlabのimfillのように塗りつぶしたものにしたい
実際に書いたコード
import cv2 import numpy as np # gray画像(coins.png)の読み込み gray = cv2.imread('tmp/coins.png',0) # Otuの二値化 ret, th = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) cv2.imshow('test',th) cv2.waitKey(0) cv2.destroyAllWindows()
これをはっきりと白で塗りつぶしたい。urlにあるmatlabのimfillがpythonではできないでしょうか?
ためしたこと
塗りつぶし pythonと検索したときにfloodFillというのを見つけたのでいかのように実行した
floodFillについて
上記ソースコードを以下のように編集してみたが同様の結果しか得られなかった
# gray画像(coins.png)の読み込み gray = cv2.imread('tmp/coins.png',0) # Otuの二値化(入力はgrayのみ) ret, th = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) # 画像サイズ取得 h,w= gray.shape[:2] # zerosを作成 zero = np.zeros((h+2,w+2),np.uint8) # print(zero) print(type(th)) print(type(zero)) test= cv2.floodFill(th,zero,(4,4),1)[1] print(test) cv2.imwrite('tmp/test.png',test)
最後に
以下のページにあるようなimfill、中身を白で塗りつぶすようなpythonの実装のアドバイスをしていただけるとありがたいです。
最初と同じmatlabのurl
どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。