やりたいこと
pythonのopncvを使って以下の画像の外側にある白色の部分を消去したいと考えました。
中央の円以外は黒にしたいです。
やったこと
medianBlurを使ってある程度ノイズを消したのが上記の写真になっています。
一応ソースコードを貼ります。not_img_mask.pngというのが上記の写真です。
import cv2 import numpy as np #imread img = cv2.imread('sample.jpg') # grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # THRESH_BINARY:THを超えた値を255(白)にする th = 55 th, im_th_otu = cv2.threshold(gray, th, 255,cv2.THRESH_BINARY) print(th) # ノイズ処理:medianBlur ksize = 125 img_mask = cv2.medianBlur(im_th_otu,ksize) not_img_mask = cv2.bitwise_not(img_mask) cv2.imshow('image',not_img_mask) cv2.waitKey(0) cv2.destroyAllWindows()
考え
上記ソースコードのksizeを奇数でかなり増やしてみたりしましたがksize=105~125くらいがきれいな円として残り、それ以上にすると輪郭が崩れてしまいます。
そのためある一定の面積以上(または以下)を消すという処理がないかと、考えましたがその方法がわかりません。
どうか以上のようなことを踏まえてアドバイスをしていただけないでしょうか。
初心者ながらわからないことがあると思いますので、不明の点はお知らせくださいませ。
どうかよろしくお願いします。
回答3件
あなたの回答
tips
プレビュー