第一步准备棋盘格
1.棋盘格需要是矩形的
2.需要需要知道黑色(白色)格子的边长
建议用visio画一个,或者用程序生成一个。最好是买一个,棋盘格的平整度对标定很重要。
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
void main()
{
//---生成标定图
IplImage *img;
int chess_size = 500;
int dx = 10; //棋盘格大小,像素为单位
int dy = 7; //棋盘格数目
img = cvCreateImage(cvSize(chess_size*dy, chess_size*dx), IPL_DEPTH_8U, 1);
cvZero(img);
int flag = 0;
for (int i = 0; i < dx; i++)
for (int j = 0; j < dy; j++)
{
flag = (i + j) % 2;
if (flag == 0)
{
for (int m = i*chess_size; m < (i + 1)*chess_size; m++)
for (int n = j*chess_size; n < (j + 1)*chess_size; n++)
*(img->imageData + m*img->widthStep + n) = 255;
}
}