我是openCV和图像处理的新手我试图通过比较磁盘上两张来自相机的帧的已保存图像来使用光流(Lucas-Kanade方法)找到移动物体。
我要问的代码部分是:
Mat img = imread("t_mono1.JPG", CV_LOAD_IMAGE_UNCHANGED);//read the image
Mat img2 = imread("t_mono2.JPG", CV_LOAD_IMAGE_UNCHANGED);//read the 2nd image
Mat pts;
Mat pts2;
Mat stat;
Mat err;
goodFeaturesToTrack(img,pts,100,0.01,0.01);//extract features to track
calcOpticalFlowPyrLK(img,img2,pts,pts2,stat,err);//optical flow
cout<<" "<<pts.cols<<"\n"<<pts.rows<<"\n";`
我得到的是pts的大小是100乘1.我认为它应该是100乘2,因为像素有x和y坐标。此外,当我使用循环来显示数组的内容时,pts数组全部为零,所有数组都是一维的。
我见过这个问题: OpenCV's calcOpticalFlowPyrLK throws exception
我尝试使用矢量,但是我在构建时遇到错误,表示无法在不同数据类型之间进行转换。我正在使用VS2008和openCV2.4.11
我想获得第一个和第二个图像中的特征的(x,y)坐标和错误,但传递给calcOpticalFlowPyrLK的所有数组都是一维的,我不明白这是怎么回事? / p>