用opencv做棋盘格的标定
今天看了好多别人的程序,蒙圈的要命,书上的例子也长的吓人,后来就得不能蛮干,就找到一精简的程序研究起来,最后还是有模有样的运行出来了。现在奉献给像我一样苦苦探求的人。
#include
#include
using namespace std;
int main()
{
cout <<"CheckBoard Calibration !"<
if (img==NULL)
{
cout << "No valid image input."<
}
int corner_row=8;//表示一行中黑白格总和减一
int corner_col=11; //表示一列中黑白格总和减一
int corner_n=corner_row*corner_col;//总共的角点
CvSize pattern_size=cvSize(corner_row,corner_col); //角点数
CvPoint2D32f* corners = new CvPoint2D32f[corner_n];//存储角点的数组
int corner_count; //用来标识是否找到所有的角点
//第一个大函数
int found=cvFindChessboardCorners(img,pattern_size,corners,&corner_count,
CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUADS);
int half_win_size=3;//the window size will be 3+1+3=7
int iteration=20;
double epislon=0.1;
//第二个大函数
cvFindCornerSubPix(img,corners,corner_count,cvSize(half_win_size,half_win_size),cvSize(-1,-1),
cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,iteration,epislon));
//第三个大函数
cvDrawChessboardCorners(img,pattern_size,corners,corner_count,found);
cout<<"found="<
cout << "NO. "< cvShowImage( "Draw", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Draw");
return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
