首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV卢卡斯·卡纳德光流

OpenCV卢卡斯·卡纳德光流
EN

Stack Overflow用户
提问于 2012-06-07 15:34:28
回答 1查看 4.7K关注 0票数 0

我在一个代码中工作,我必须找到我感兴趣的所有角点的轨迹。因此,为了同样的目的,我使用了LKPyr光流,它使用前一张图像的角点并在当前图像中找到它们。我一帧一帧地使用光流,即帧1和帧2,然后是帧2和帧3。所以,我认为我在上一次迭代中找到的帧2角点特征将是光流的当前特征,但事实并非如此,每次我做好特征跟踪时,点都会改变,问题是,对于轨迹点,我需要跟踪当前点,并在新点到来时添加新点,当旧点即将丢失时,我应该获得status=0,这样我就可以逐个跟踪点。有没有办法做到这一点?有没有办法知道视频中每个点的结束时间,以便我可以跟踪轨迹?更改cvLKpyrOpticalFlow调用中的标志是否有助于获得连续的流?

代码语言:javascript
复制
    cvGoodFeaturesToTrack ( imgGrayscale, imgEigen, imgTemp, corners_img, &corner_count, 0.01, 5.0, 0, 3, 0.4 );

    cvCalcOpticalFlowPyrLK( imgGrayscale, nxtimgGrayscale, pyr_img, pyr_nxtimg, corners_img, corners_nxtimg, corner_count, cvSize ( win_size, win_size ), 5, status, track_error, IterCriteria, NULL);

这是我为了得到光流而运行的代码块。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-07 20:19:39

您应该仅在要跟踪的序列的“第一个”(或“参考”)帧中运行cvGoodFeturesToTrack,然后仅在后续帧中运行cvCalcOpticalFlowPyrLK。

前面的例程在参考帧中识别具有“高对比度”(在表达式的明确定义意义上)的像素和补丁,因此可能更容易跟踪。后一个例程实际上执行跟踪,将参考特征与后续帧中的附近位置进行匹配,以便识别它们的新位置。当它成功时,它将状态向量中的相应元素设置为1。对于帧本身来说,后续帧中的这些特征可能是也可能不是“好的跟踪特征”,因为可能存在具有更高对比度的其他图像区域。无论如何,对于大多数应用程序,您只需要跟踪在参考帧中检测到的“良好特征”。

由于跟踪某些功能通常会失败,在几帧之后,您可能会发现没有(或不够多)“活动的”-tracked功能。在这一点上,您可以运行另一次“良好功能”检测来补充集合。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10927539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档