Python 有没有办法用白色填充图像的内部?

Python 有没有办法用白色填充图像的内部?,python,opencv,image-processing,image-segmentation,image-thresholding,Python,Opencv,Image Processing,Image Segmentation,Image Thresholding,例如,在MATLAB图像处理工具箱中,我们有imfill函数。如何在Python中实现这一点 所以我尝试分割各种形状,去除内部的黑色。我知道如果我得到了边界,分割仍然很容易,但我也想检测出完美的形状。简而言之,我想删除图像中的黑色覆盖区域,如图所示 我尝试过使用逐位运算、形态变换和泛光填充。我是个新手,不知道它是怎么工作的 image=cv2.imread('rec2.jpg') kernel = np.ones((5,5),np.uint8) w=int(image.shape[1]*0.3)

例如,在MATLAB图像处理工具箱中,我们有
imfill
函数。如何在Python中实现这一点

所以我尝试分割各种形状,去除内部的黑色。我知道如果我得到了边界,分割仍然很容易,但我也想检测出完美的形状。简而言之,我想删除图像中的黑色覆盖区域,如图所示

我尝试过使用逐位运算、形态变换和泛光填充。我是个新手,不知道它是怎么工作的

image=cv2.imread('rec2.jpg')
kernel = np.ones((5,5),np.uint8)
w=int(image.shape[1]*0.3)
h=int(image.shape[0]*0.5)
resized = cv2.resize(image,(w, h), interpolation = cv2.INTER_CUBIC)
gray = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
thresh = cv2.threshold(blurred, 200, 255, cv2.THRESH_BINARY_INV)[1]
thresh2 = cv2.threshold(blurred, 200, 255, cv2.THRESH_BINARY)[1]
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
print(len(cnts[1])) #To verify number of counts
cv2.imshow("Result",np.hstack((thresh,thresh2)))


这是迄今为止分割的图像。但我希望内部的黑色区域也用白色填充,这样就可以将其识别为实心形状。

您可以通过定义
厚度=cv2来绘制填充轮廓。填充的

cv2.drawContours(thresh, cnts, -1, (255, 255, 255), thickness=cv2.FILLED)

这是谷歌最热门的“opencv填充漏洞”:@ShivamSahil如果答案有效,请单击计票旁的空心勾号(复选标记)将其标记为“已接受”,以便a)回答者获得应有的认可,b)其他潜在的回答者知道有解决方案,c)具有相同问题的其他人可以立即看到哪个答案有效。谢谢。谢谢@MarkSetchell的评论。