2010-07-06 88 views
1

我想从网络摄像头定义矩形的方向和位置。我使用了camshift算法,但效果不佳(高度依赖照明)。告诉我有什么机制来解决这个问题。可能会用类似的程序退出一些源代码?使用opencv跟踪矩形

回答

0

这只是一个想法。

我通常会想到歧视来区分我想要检测/跟踪的对象。我知道你可以使用其他方法检测矩形。

我更喜欢获取二值化图像,只有我的对象或其中一些包括我的目标对象包含在内。

之后,使用blob工作。我使用cvBlobs库,并有选项来跟踪斑点和检测斑点。在这个库中是获取角度(方向)的方法,你可以试试这个选项。

double cvAngle(CvBlob *blob); 

如果您的矩形正在移动,请尝试使用帧之间的差异来检测它。

Sory为这漫长的演讲。 我希望这可以帮助你。 豪尔赫

0

我不太清楚什么是“矩形”你谈论,一些截图或者更好的描述将是巨大的:

1:如果你有闪电的问题,您应该考虑开发自己的算法消除噪声,将图像转换为二进制图像并进行背景减法(取决于设置和初始化),腐蚀和扩大等,尽管这是另一个值得研究的长期话题。

2:你能做些什么,首先你会发现周围的矩形区域的所有轮廓,这可以用OpenCV的功能findContours();进行(请记住,您的图像必须是二进制) 当储存您所有的轮廓点,你可以事后将信息馈送给另一个OpenCV功能minAreaRect();

存储来自minAreaRect()的信息,该信息是RotatedRect类型的结构;一个变量,并潜入结构内,以提取的旋转度,有:

variablename.degree

0

有一个在样品良好可加工algoritm,OpenCV的文件夹= square.cpp。除了图像需要视频(CvCapture)的小重拍(int main)。它工作正常。