2024-09-29 23:31:39 发布
网友
我有一些图片,有些元素用红色或黄色框起来。长方体通常是多边形。在
目的是计算红色和黄色元素的数量。在
我怎么算?在
我试着用一种能得到红色或黄色的面膜,但效果相对较差。但我不知道以后怎么数数。在
mask_example
您可能会看到以下步骤:
每一步都有很多方法,但我还没有全部尝试过。正如我对他们的编号,其他人可能希望对任何一步改进提出建议。在
因此,对于步骤1,您可以通过计算新图像中的每个像素来区分红色和黄色,如下所示:
new = (Red - Green)/(Red + Green + 1)
+1只是停止被零除。实际上,我是这样用ImageMagick做的,但是你可以用PIL/Pillow+Numpy,或者OpenCV来做同样的事情:
+1
希望你能看到这使得黄色像素变暗,红色像素变浅。在
然后给你一个阈值,你可以用它来分别打开和关闭每种颜色。顺便说一下,Lab色彩空间中的a通道也是一个合理的判别式。在
a
步骤2只是一个阈值和掩蔽操作,因为我们可以从步骤1中看到分离阈值。在
第3步意味着填写这些方框。你可以用“形态学”来实现这一点,所以我可以用一个15x1像素的水平结构元素来缩小白色水平线中的间隙:
convert result1.png -threshold 50% -morphology close rectangle:15x1 result2.png
然后使用一个垂直的1x15结构元素,如下图所示:
convert result1.png -threshold 50% -morphology close rectangle:15x1 -morphology close rectangle:1x15 result2.png
要实现这一点,您可以看到间隙已全部闭合,轮廓完整:
你可以使用OpenCV和OpenCV的函数。在
第4步-现在可以使用OpenCV的findContours()来计算blob并获得它们的特征。在
findContours()
您可能会看到以下步骤:
每一步都有很多方法,但我还没有全部尝试过。正如我对他们的编号,其他人可能希望对任何一步改进提出建议。在
因此,对于步骤1,您可以通过计算新图像中的每个像素来区分红色和黄色,如下所示:
^{pr2}$+1
只是停止被零除。实际上,我是这样用ImageMagick做的,但是你可以用PIL/Pillow+Numpy,或者OpenCV来做同样的事情:希望你能看到这使得黄色像素变暗,红色像素变浅。在
然后给你一个阈值,你可以用它来分别打开和关闭每种颜色。顺便说一下,Lab色彩空间中的
a
通道也是一个合理的判别式。在步骤2只是一个阈值和掩蔽操作,因为我们可以从步骤1中看到分离阈值。在
第3步意味着填写这些方框。你可以用“形态学”来实现这一点,所以我可以用一个15x1像素的水平结构元素来缩小白色水平线中的间隙:
然后使用一个垂直的1x15结构元素,如下图所示:
要实现这一点,您可以看到间隙已全部闭合,轮廓完整:
你可以使用OpenCV和OpenCV的函数。在
第4步-现在可以使用OpenCV的
findContours()
来计算blob并获得它们的特征。在相关问题 更多 >
编程相关推荐