[英]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.