【发布时间】:2014-04-23 13:01:18
【问题描述】:
我正在尝试使用 SIFT 算法从视频流中跟踪对象。我想检测对象并通过在它周围绘制一个矩形来跟踪它。问题是,矩形被倾斜并且大部分时间都没有准确地绘制。我正在使用以下代码在检测到的对象周围绘制矩形(videoImage 是视频流中的帧)。
line(videoImage, sceneCorners[0], sceneCorners[1], Scalar(255, 0, 0), 2);
line(videoImage, sceneCorners[1], sceneCorners[2], Scalar(255, 0, 0), 2);
line(videoImage, sceneCorners[2], sceneCorners[3], Scalar(255, 0, 0), 2);
line(videoImage, sceneCorners[3], sceneCorners[0], Scalar(255, 0, 0), 2);
我还尝试了以下代码(imgMatches 是只有匹配好的图像)
line(imgMatches, sceneCorners[0] + Point2f( object.cols, 0), sceneCorners[1] + Point2f( object.cols, 0), Scalar(0, 255, 0), 2);
line(imgMatches, sceneCorners[1] + Point2f( object.cols, 0), sceneCorners[2] + Point2f( object.cols, 0), Scalar(0, 255, 0), 2);
line(imgMatches, sceneCorners[2] + Point2f( object.cols, 0), sceneCorners[3] + Point2f( object.cols, 0), Scalar(0, 255, 0), 2);
line(imgMatches, sceneCorners[3] + Point2f( object.cols, 0), sceneCorners[0] + Point2f( object.cols, 0), Scalar(0, 255, 0), 2);
两者似乎给出了相同的结果。所以,我的问题是,如何绘制一个与被跟踪对象一致的矩形边界?顺便说一句,我在 Windows 7 上使用 OpenCV (C++) 和 Visual Studio 2010。
【问题讨论】:
-
关于在堆栈溢出中编写代码块的快速说明:不要使用波浪号,而是在每行代码前留 4 个空格。
-
@ChronoTrigger 非常感谢您的有用建议。
标签: c++ opencv sift bounding-box object-detection