Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么函数calcOpticalFlowPyrLK返回相同的值?_C++_Opencv - Fatal编程技术网

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

C++ 为什么函数calcOpticalFlowPyrLK返回相同的值?,c++,opencv,C++,Opencv,我正在做一个opencv应用程序,我正在使用de Lucaskanda算法。 我使用此功能: calcOpticalFlowPyrLK(pregray, gray,points[0], points[1], status, err, Size(31,31),3, termcrit, 0, 0.001); 计算点的新位置,但点[1][2]的值与点[0][2]的值相同,不会发生变化。为什么?如果不了解如何初始化函数的参数,就很难回答您的问题。但我猜你的prevgray图像与gray图像相同 Mat

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

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 
}

请不要发布所有cap问题标题。什么是
?定义在何处,引用在何处?点[0][0]、[0][1]和[0][2]的值建立在Main上,此函数仅计算这些点的新位置,并将其新闻位置推送到向量点[1][x]中。通常,此函数不会为
点[0]
点[1]
返回相同的值。我无法回答您的问题,除非看到您如何初始化提供给函数的参数。我猜你的
prevgray
图像与
gray
相同。