【发布时间】:2020-03-06 20:16:39
【问题描述】:
我正在尝试在某些视频上使用光流。但是当我不调整视频大小时,它根本不起作用。
根据documentation我设置的参数为:
calcOpticalFlowFarneback(prevgray, current, flow, 0.5, 1, 10, 2, 5, 1.1, 0);
如果视频按比例缩小或放大,它可以正常工作:
但如果要保持视频的原始大小,它根本不起作用:
我试过改变函数的参数:
calcOpticalFlowFarneback(prevgray, current, flow, 0.5, 1, 4, 2, 3, 1.1, 0);
//or
calcOpticalFlowFarneback(prevgray, current, flow, 0.5, 1, 50, 2, 5, 1.2, 0);
//or
calcOpticalFlowFarneback(prevgray, current, flow, 0.5, 1, 100, 20, 7, 1.2, 0);
...
但它们都没有任何区别。原始尺寸视频的结果仍然没有流量。
Lukas Kanade algorithm 也有同样的问题:
当我将720 x 480 或其他高分辨率视频缩小到一半大小 (360 x 240) 时,光流算法仍然可以正常工作。但是无论我如何设置参数,它们都不适用于没有缩放(原始尺寸)的视频。
如何在不调整视频大小的情况下使光流适用于视频?
【问题讨论】:
-
你试过 calcOpticalFlowPyrLK 吗?我建议你查看 OpenCV 4.2.0 的文档:docs.opencv.org/4.2.0/dc/d6b/…
-
您可以在处理之前使工作视频帧调整大小(320,240)吗?因为我尝试了这些尺寸并且效果很好。
-
@YunusTemurlenk 你是对的。我将它们缩放到一半大小并且仍然有效。看来,如果视频的原始尺寸很大,它可以工作,否则它不会。
-
@Ali 我试过
calcOpticalFlowPyrLK。但它有同样的问题。适用于更高分辨率的视频,但不适用于较小的视频! -
这很有趣……
标签: c++ opencv opticalflow