Python 3.x 我希望使用python';分割大小为32x32px或更大的补丁;s opencv

Python 3.x 我希望使用python';分割大小为32x32px或更大的补丁;s opencv,python-3.x,opencv,machine-learning,image-segmentation,Python 3.x,Opencv,Machine Learning,Image Segmentation,这里我有一个图像: 然后我使用下面的代码生成了阈值图像 img = cv2.imread('Image_Original.jpg') hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) lower_gr = np.array([40,0,0]) upper_gr = np.array([90,255,255]) mask = cv2.inRange(hsv,lower_gr,upper_gr) mask=~mask res = cv2.bitwise_and(i

这里我有一个图像:

然后我使用下面的代码生成了阈值图像

img = cv2.imread('Image_Original.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_gr = np.array([40,0,0])
upper_gr = np.array([90,255,255])
mask = cv2.inRange(hsv,lower_gr,upper_gr)
mask=~mask
res = cv2.bitwise_and(img,img,mask = ~mask)
cv2.imshow('Masked',mask)
cv2.imshow('Result',res)
然后是以下图像(遮罩):

和(结果):

现在,我想要的是通过将黑色像素设置为零来移除黑色像素(),并且只提取大小为32x32px或更大的面片。

使用cv2.findContours()查找遮罩图像中白色面片的边界。 每个边界作为二维点列表返回

使用cv2.boundingRect()获取每个面片的宽度/高度,并进行相应的筛选。 您还可以使用cv2.minareact()或cv2.contourArea()根据面片的实际面积进行过滤


一旦确定应丢弃哪些补丁,请使用cv2.fillPoly()在彩色图像上用黑色覆盖它们。

不清楚您要做什么。通过将黑色像素设置为零来删除它们-只会将它们保留为黑色(黑色为零)。您想要什么样的32x32补丁?你能举个例子吗?你是在试图从原始叶片图像中分割出的“点”周围种植作物吗?你可以看到图像中有不同大小的棕色斑点,我想要的是只将它们提取到一个较新的图像中,然后制作其他所有内容0@ParasKumarLangyan所以你想让每个棕色补丁都调整到32x32大小的路径,是吗?@JeruLuke我想要的只是32x32或更大的补丁。其余的应该改成黑色