【发布时间】:2021-08-11 11:27:14
【问题描述】:
我有下面的预处理大米图像。我想用黑色填充大米,然后执行逆运算以找到轮廓。我正在尝试使用侵蚀/膨胀操作但不工作。下面是我正在使用的代码 sn-p。
首先我使用了阴影去除算法,然后使用了自适应阈值,它给出了输入图像。现在,我想将输入图像更改为输出图像。
原图:
输入图像:
所需的输出图像:
代码片段:
oposite = cv2.bitwise_not(img)
#Erosion
kernel = np.ones((3,3),np.uint8)
erosion = cv2.dilate(des,kernel,iterations = 1)
erosion = cv2.bitwise_not(erosion)
im_out = oposite + erosion
cv2.imshow("output", im_out)
cv2.waitKey(0)
【问题讨论】:
-
什么是“des”图像?您应该先反转图像,然后进行膨胀,这应该可以。您可能需要稍微调整一下内核大小。
-
您的“期望输出”是原始图像。您应用了无法撤消的非线性变换。因此,您无法从转换后的图像中检索原始图像。
-
'des' 是'相反的图像'。它的拼写错误。有没有办法使用floodfill?
-
洪水填充也会填充大米之间的洞。最好的办法是检测内核,然后将它们绘制为填充形状。
-
@RajatHada 我添加了一个答案。请让我知道它是否解决了您的问题,如果没有,为什么。谢谢。
标签: python numpy opencv image-processing computer-vision