首页 > 分享 > 用opencv做棋盘格的标定

用opencv做棋盘格的标定

最新推荐文章于 2024-11-18 22:31:24 发布

cutelily2014 于 2015-12-15 21:22:09 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

今天看了好多别人的程序,蒙圈的要命,书上的例子也长的吓人,后来就得不能蛮干,就找到一精简的程序研究起来,最后还是有模有样的运行出来了。现在奉献给像我一样苦苦探求的人。

#include <cv.h>
#include <highgui.h>
using namespace std;
int main()
{   
cout <<"CheckBoard Calibration !"<<endl;        
IplImage* img= cvLoadImage("ge.jpg",CV_LOAD_IMAGE_GRAYSCALE);//读取图像的灰度格式   
if (img==NULL)
{     
cout << "No valid image input."<<endl;           
return 0;   
}       
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="<<found<<endl;
for (int i = 0; i < corner_n; i++){//显示所有角点的坐标,共11*8个
cout << "NO. "<<i<<": x=" << corners[i].x;
cout << "y=" << corners[i].y << endl;
}
cvNamedWindow("Draw", CV_WINDOW_AUTOSIZE );   
cvShowImage( "Draw", img);    
cvWaitKey(0);    
cvReleaseImage(&img);    
cvDestroyWindow("Draw");     
return 0;
}

相关知识

如何实现一个高效的全景视频拼接系统?请详细描述从相机标定到颜色均衡处理的整个工作流程。
利用OpenCV根据图片识别环境的亮度
opencv
OpenCV实战项目——多种颜色识别
用KBrO3标定Na2S2O3所涉及的反应是 BrO3
深入浅出:利用OpenCV实现手写数字识别之旅
《Eagle老师的节日主题折纸(附棋盘镶嵌式折纸的变化欣赏)》
蜀葵为什么叫蜀葵、“端午花”、“棋盘花”,“一丈红”?
基于OpenCV的鲜花的图像分类系统详细设计与具体代码实现
【AI实战项目】基于OpenCV的“颜色识别项目”完整操作过程

网址: 用opencv做棋盘格的标定 https://m.huajiangbk.com/newsview1316224.html

所属分类:花卉
上一篇: ROS 摄像头校准与Aprilt
下一篇: 立体中空标本框6寸 10diy手