这里我有一张图片:
然后我使用下面的代码生成了阈值图像。
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() 查找蒙版图像中白色斑 block 的边界。 每个边界都以 2D 点列表的形式返回。
使用 cv2.boundingRect() 获取每个面片的宽度/高度并进行相应的过滤。 您还可以使用 cv2.minAreaRect() 或 cv2.contourArea() 根据补丁的实际面积进行过滤。
https://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.htm
确定应丢弃哪些色 block 后,使用 cv2.fillPoly() 在彩色图像上用黑色覆盖它们。
关于python-3.x - 我想使用 python 的 opencv 分割大小为 32x32px 或更大的补丁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51055411/