【问题标题】:I want segment the patches of size 32x32px or more using python's opencv我想使用 python 的 opencv 分割大小为 32x32px 或更大的补丁
【发布时间】:2018-06-27 05:53:05
【问题描述】:

这里有一张图片:

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

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 或更大的补丁。

【问题讨论】:

  • 不清楚您要做什么。通过将黑色像素设置为零来删除它们 - 只会让它们保持黑色(黑色为零)。你追求什么样的 32x32 补丁?你能举个例子吗?您是否试图在从原始叶子图像中分割出来的“点”周围进行裁剪?
  • 你可以看到不同大小的图像中有棕色的补丁,我想要的只是将它们提取到较新的图像中,并将其他所有内容都设为0
  • @ParasKumarLangyan 所以你希望每个棕色补丁都调整为 32x32 大小的路径,是这样吗?
  • @JeruLuke 我想要的只是大小为 32x32 或更大的补丁。其余的应改为黑色

标签: python-3.x opencv machine-learning image-segmentation


【解决方案1】:

使用 cv2.findContours() 查找蒙版图像中白块的边界。 每个边界都以二维点列表的形式返回。

使用 cv2.boundingRect() 获取每个补丁的宽度/高度并进行相应的过滤。 您也可以使用 cv2.minAreaRect() 或 cv2.contourArea() 根据补丁的实际面积进行过滤。

https://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.htm

确定应丢弃哪些色块后,使用 cv2.fillPoly() 在彩色图像上用黑色覆盖它们。

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多