gpt4 book ai didi

c - OpenCV Lucas Kanade 光流

转载 作者:行者123 更新时间:2023-11-30 14:24:56 29 4
gpt4 key购买 nike

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

    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);

这是我运行以获得光流的代码块。

最佳答案

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

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

由于某些功能的跟踪通常会失败,因此在几帧之后,您可能会发现没有(或没有足够的)“实时”跟踪功能。此时,您可以运行另一遍“良好特征”检测来补充该集合。

关于c - OpenCV Lucas Kanade 光流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10927539/

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