由于正方形似乎比圆的厚度“大得多”,因此使用一些矩形核(以保持正方形的形状)进行简单的形态学开口应该在这里起作用。
那是我的解决办法:
import cv2
from skimage import io # Only needed for web grabbing images; for local images,use cv2.imread(...)
# Read provided example image
image = cv2.cvtColor(io.imread('https://i.stack.imgur.com/QfUOF.png'),cv2.COLOR_RGB2BGR)
# Mask non-white content
_,mask = cv2.threshold(cv2.cvtColor(image,cv2.COLOR_BGR2GRAY),252,255,cv2.THRESH_BINARY_INV)
# Apply morphological opening with 5x5 rectangular kernel to get rid of the circles
mod = cv2.morphologyEx(mask,cv2.MORPH_OPEN,cv2.getStructuringElement(cv2.MORPH_RECT,(5,5)))
# Obtain mask of parts to be erased from the difference of both masks
erase = mask - mod
# Set corresponding pixels in image to white
image[erase == 255] = (255,255)
cv2.imshow('mask',mask)
cv2.imshow('mod',mod)
cv2.imshow('erase',erase)
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
非白色内容mask
如下所示:
mod
开头后的修改蒙版如下:
两者的区别是要擦除的部分(erase
)
最后,所有被遮罩的像素都设置为白色:
希望有帮助!
,
从左上角开始填充,先填充黑色,然后填充白色,再填充红色:
碰巧,我是通过 ImageMagick 做到的,如下所示,但是您可以使用Python包做同样的事情:
magick circles.png \
-fill black -draw "color 0,0 floodfill" \
-fill white -draw "color 0,0 floodfill" \
-fill red -draw "color 0,0 floodfill" result.png
本文链接:https://www.f2er.com/3166393.html