gpt4 book ai didi

Java和OpenCV颜色检测

转载 作者:行者123 更新时间:2023-12-01 09:47:40 24 4
gpt4 key购买 nike

我正在学校做一个项目,基本上是:编写一个应用程序,让无人机自主飞行,并通过扫描卡在墙上的二维码,能够在房间中导航以完成任务特定任务。

我目前正在研究的是让无人机检测纸板箱(作为障碍物)。这些盒子是白色的,上面有一个蓝色圆圈。我打算如何解决这个问题,方法是扫描框架中的颜色和方 block :

如果无人机检测到一个正方形,请检查它是否是白色的。如果它是白色的,请检查它是否包含蓝色圆圈。如果是的话,我可以说它很可能是一个纸板箱。

这就是盒子的样子:

如果有人能够提供一些关于如何开始颜色检测工作的指示,我将非常高兴!

PS:我没有提供任何代码,因为我真的不知道该提供什么。如果需要的话,我非常乐意提供一些

更新:对于任何遇到与我相同问题的人,一位同学提供了一个关于我的具体情况的极好的链接:

http://opencv-java-tutorials.readthedocs.io/en/latest/08-object-detection.html

最佳答案

我会从不同的角度通过首先检测蓝色圆圈来做到这一点。

  1. 检测基色

    参见RGB value base color name

  2. 选择与白色或灰色像素相邻的所有蓝色像素

    由于您的圆圈有黑色边框,因此您必须选择白色、灰色、黑色附近的所有蓝色像素......只是为了确定。这是结果(绿色是选定的像素):

    example

    另一种(更强大)的可能性是同时选择与白色和蓝色相邻的所有黑色像素。

  3. 进行连通分量分析

    因此将所有连接的像素合并为折线

  4. 对于每条折线,确定它是圆形/椭圆形/椭圆形

    这可以通过研究线段之间的角度来完成。如果有尖锐的尖刺,则存在尖锐的边缘,并且它不是椭圆形。如果周长距离从其边界框计算出的圆/椭圆/椭圆形太远,则它不是椭圆形,而是一些更复杂的曲率。

  5. 对于每个椭圆形,确定是否用蓝色填充

    因此,只需对椭圆形圆周进行洪水填充蒙版,然后比较原始图像中有多少像素是蓝色的,而不是蓝色的。如果比例接近 100% 蓝色,则填充蓝色椭圆形......

    由于您的标记内部也有一些功能,您可以计算其中所有基色的比率,以更准确地检测标记。

    看看Algorithms: Ellipse matching一些额外的想法。

  6. 现在您可以类似地检查背景是否为白色/灰色

还有很多其他可能的方法,例如 OCR and character similarity或基于 FFT/DCT、圆的霍夫变换...而且您不仅限于 geometric properties comparation相反,您可以比较直方图...

关于Java和OpenCV颜色检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37854040/

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