int main()
{
Mat src0 = imread("0.jpg",CV_LOAD_IMAGE_COLOR);
Mat src1 = imread("1.jpg",CV_LOAD_IMAGE_COLOR);
Mat gray0;
Mat gray1;
int corner_count = 5000;
vector<Point2f> corners0;
vector<Point2f> corners1;
cvtColor(src0,gray0,CV_BGR2GRAY);
goodFeaturesToTrack(gray0,corners0,corner_count,0.01,5,Mat(),3,false,0.04);
cornerSubPix(gray0,corners0,Size(10,10),Size(-1,-1),TermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03));
cvtColor(src1,gray1,CV_BGR2GRAY);
goodFeaturesToTrack(gray1,corners1,corner_count,0.01,5,Mat(),3,false,0.04);
cornerSubPix(gray1,corners1,Size(10,10),Size(-1,-1),TermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03));
vector<Point2f>::iterator it;
for(it = corners0.begin(); it != corners0.end();it++)
{
circle(src0,*it,1,Scalar(255,0,255),1,8,0);
}
for(it = corners1.begin(); it != corners1.end();it++)
{
circle(src0,*it,1,Scalar(255,0,255),1,8,0);
}
imshow("src0",src0);
waitKey(0);
system("pause");
return 0;
}
错误提示:goodFeaturesToTrack函数中mask参数如果填入的是0,VS编译出错;mask的值设置为Mat()则可以正常使用。
使用光流算法的一点儿感想:处理耗时较多。