Opencv 如何使我的彩色物体检测和跟踪程序更有效?
首先,感谢所有stackoverflow用户的帮助。我真的很感激Opencv 如何使我的彩色物体检测和跟踪程序更有效?,opencv,image-processing,computer-vision,Opencv,Image Processing,Computer Vision,首先,感谢所有stackoverflow用户的帮助。我真的很感激因此,我制作了一个彩色物体检测程序。我可以控制鼠标的点击,甚至可以在MS paint中绘制一些东西现在,我必须在学院的工程设计竞赛中展示我的作品。我需要让我的计划更有效。首先,我用来跟踪和移动的对象是一个红色的对象,我通过调整HSV值过滤掉了周围的颜色但是,当我在不同的环境中尝试代码时,我发现了一些问题。周围有很多红色的物体,我的程序检测到这些物体并给我假值 因此,我的目标是:-我必须让我的程序在几乎所有的环境中运行,并使程序独立于
因此,我制作了一个彩色物体检测程序。我可以控制鼠标的点击,甚至可以在MS paint中绘制一些东西
现在,我必须在学院的工程设计竞赛中展示我的作品。我需要让我的计划更有效。首先,我用来跟踪和移动的对象是一个红色的对象,我通过调整HSV值过滤掉了周围的颜色
但是,当我在不同的环境中尝试代码时,我发现了一些问题。周围有很多红色的物体,我的程序检测到这些物体并给我假值
因此,我的目标是:-我必须让我的程序在几乎所有的环境中运行,并使程序独立于背景。我的程序应该只跟踪和检测我想要的对象。因为,我是大学一年级的本科生,我的知识有限。所以,我想从专家那里得到一些建议。谢谢请不要使用源代码,因为我想理解并纠正我的错误。假设您有一个二进制图像作为颜色过滤的输出,那么:
findContours()
-function()提取对象。你可以得到所有红色物体的轮廓,包括你的可乐帽- 面积可以通过
-function()计算,并与阈值进行比较轮廓面积()
- 物体的圆度可以通过圆度=(4*PI*A)/p^2来计算,其中A是面积(通过上述函数计算),p是物体的周长。周长是
-function()的输出。圆的圆度为1。您可以将对象的值与它进行比较arcLength()
不要试图达到100%的性能,记住:“完美是好的敌人”-Arisotle。嘿,背景中的红色对象看起来如何,与您的跟踪对象相似?也许,你能提供一个例子吗?相机在跟踪时是固定的还是移动的?@Dennis:-Dennis,我用的红色物体基本上是一个可乐瓶盖。因此,当我尝试通过改变周围条件来使用该程序时,我放置了各种红色物体,如红帽、T恤上的红线、红笔等。当我检查阈值图像时,我发现这些物体出现在阈值图像中,我的程序显示“背景噪音太大,无法检测到任何物体”。我想我必须上传一张照片,这样你才能更好地了解我的情况。我有没有办法让我的程序只检测特定区域的物体,比如像可乐帽这样的物体?:-谢谢丹尼斯。我真诚地感谢你的帮助。你的想法真的帮了我很大的忙。我已经计算了物体的圆度,它大约是0.8-0.9。由于某种原因,它不是完全循环的。另外,当我在窗口中移动它时,在某些点上它有点崩溃(有点像碎片),圆度降低到0.7,但我仍然使用圆度选项过滤出一些较大的对象。