极简OpenCV的相机标定代码

            照例,在正式贴代码之前要说一段废话。这个是我毕业论文做的东西,之前也是在这个算法中做了很多测试,后来发现要用的时候,系统重装而且没有备份。所以这次写了一个极简的标定程序,用于临时的项目测试。

至于自定义头文件“CommonHead.h”就只是一个void std_calibration(char**);的申明,就不贴代码了。

/*
利用OpenCV完成相机的标定
@author cyoubo
@DateTime 2015.9.8
@OpenCV Version 2.4.10
*/
#include 
#include 
#include 
#include 
#include 
#include "CommonHead.h"

void std_calibration(char** path)
{
	//分别表示棋盘格的行数、列数、张数、共计角点数、有效棋盘影像张数、当前处理影像编号
	int b_w=6,b_h=9,n_b=5,b_n,success=0,step=0;
	//计算共计棋盘角点数
	b_n=b_w*b_h;
	//创建棋盘规格Size
	CvSize board_sz=CvSize();
	board_sz.width=b_w;
	board_sz.height=b_h;
	//创建搜索窗Size
	CvSize winSize=CvSize();
	winSize.width=11;
	winSize.height=11;
	//创建拒绝域Size
	CvSize noSize=CvSize();
	noSize.width=-1;
	noSize.height=-1;
	//创建影像尺寸Size,具体值等待后期输入
	CvSize imageSize=CvSize();
	//创建迭代需求对象
	CvTermCriteria term;
	term.type=CV_TERMCRIT_EPS+CV_TERMCRIT_ITER;
	term.epsilon=0.1;
	term.max_iter=30;

	CvMat* image_point=cvCreateMat(n_b*b_n,2,CV_32FC1);
	CvMat* object_point=cvCreateMat(n_b*b_n,3,CV_32FC1);

	CvMat* point_count=cvCreateMat(n_b,1,CV_32SC1);
	CvMat* Intrinsic=cvCreateMat(3,3,CV_32FC1);
	CvMat* Distortion=cvCreateMat(5,1,CV_32FC1);

	//循环获取影像中的角点
	for(int index=0;index


你可能感兴趣的:(C++,OpenCV)