gpt4 book ai didi

python - 如何计算 python 中图像上的红色和黄色多边形?

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:24 28 4
gpt4 key购买 nike

我有一些图像,其中某些元素用红色或黄色框起来。盒子一般是一个多边形。

目标是计算红色和黄色元素的数量。

我该如何计数?

我曾尝试应用获得红色或黄色的 mask ,但效果相对较差。但是我不知道以后怎么算。

mask_example

最佳答案

您可能会看到如下步骤:

  • 第 1 步 - 区分红色和黄色
  • 第 2 步 - 屏蔽红色并执行剩余步骤,然后屏蔽黄色并执行剩余步骤
  • 第 3 步 - 填充形状轮廓以使其完整且连续
  • 第 4 步 - 找到形状的轮廓并计算它们

每一步的做法有很多种,我没有全部尝试过。正如我对它们进行编号一样,其他人可能希望提出改进任何步骤的建议。


因此,对于第 1 步,您可以通过计算新图像中的每个像素来区分红色和黄色:

new = (Red - Green)/(Red + Green + 1)

+1 只是为了停止被零除。我实际上是这样用 ImageMagick 做的,但你也可以用 PIL/Pillow + Numpy 或 OpenCV 做同样的事情:

convert boxes.png -fx "(u.r-u.g)/(u.r+u.g+1)" -auto-level result1.png

enter image description here

希望您能看到这使黄色像素更暗,红色像素更亮。

这将为您提供一个阈值,您可以使用该阈值分别打开和关闭每种颜色。顺便说一句,Lab 色彩空间中的a channel 也是一个合理的判别式。


第 2 步只是一个阈值和掩蔽操作,因为我们可以从第 1 步中看到分离阈值。


第 3 步意味着填写方框。您可以使用 “形态学” 来做到这一点,这样我就可以使用像这样的水平 15x1 像素结构元素来关闭白色水平线中的间隙:

convert result1.png -threshold 50%  -morphology close rectangle:15x1  result2.png

enter image description here

然后还有一个垂直的 1x15 结构元素,就像这样:

convert result1.png -threshold 50%  -morphology close rectangle:15x1 -morphology close rectangle:1x15 result2.png

为了得到这个,你可以看到所有的间隙都被关闭了,轮廓也很完整:

enter image description here

OpenCVscikit-image 都具有可用于此目的的形态学函数。


第 4 步 - 您现在可以使用 OpenCV 的 findContours() 来计算 Blob 并获取它们的特征。

关于python - 如何计算 python 中图像上的红色和黄色多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57480668/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com