繁体   English   中英

为什么函数calcOpticalFlowPyrLK返回相同的值?

[英]Why does the function calcOpticalFlowPyrLK return the same value?

我正在做一个opencv应用程序,并且正在使用de LucasKanada算法。 我使用此功能:

calcOpticalFlowPyrLK(pregray, gray,points[0], points[1], status, err, Size(31,31),3, termcrit, 0, 0.001);

计算点的新位置,但例如,点[1] [2]的值与点[0] [2]相同,不变。 为什么?

没有看到如何初始化函数的参数,很难回答您的问题。 但是我的猜测是您的prevgray图像与gray相同。

Mat对象的复制运算符(即= )仅将标题和指针复制到矩阵,而不复制数据本身。 如果从相机抓取图像,请确保复制图像数据。 像这样:

VideoCapture cap;
cap.open(0);
Mat frame, gray, prevgray;

for(;;)
{
    cap >> frame;
    gray = rgb2gray(frame);

    calcOpticalFlowPyrLK(pregray, gray,points[0], points[1], status, err, 
         Size(31,31),3, termcrit, 0, 0.001);

    gray.copyTo(prevGray);  // make sure you copy the data

    // if you do                       
    // prevgray = gray; 
    // then in the next iteration gray and prevgray will point to the same data 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM