您的位置:首页 > 运维架构

opencv笔记2----摄像机标定中的棋盘角点检测

2013-09-30 17:28 357 查看
所用棋盘为8*8国际象棋棋盘,共检测7*7个角点

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <vector>
using namespace cv;

int main()
{
int  CurrentImage  = 0;
int  CurrentRow    = 0;         //行
int  CurrentColumn = 0;         //列

int ChessBoardSize_w = 7;       //角点个数
int ChessBoardSize_h = 7;
bool  findcorner_result = false;

const int NImages = 4;//图片数量
char* imageArray[NImages] = {"chess1.jpg",
"chess2.jpg",
"chess3.jpg",
"chess4.jpg"};
int NPoints=0;

Mat src;
Mat gray;
namedWindow("Chess",0);

vector<Point2f> corners;//存储角点
//读取图片
for(CurrentImage;CurrentImage<NImages;++CurrentImage)
{
src = imread(imageArray[CurrentImage]);
//灰度
cvtColor(src,gray,CV_BGR2GRAY);

//检测角点
corners.clear();
findcorner_result = findChessboardCorners(gray,Size(ChessBoardSize_w,ChessBoardSize_h),corners,3);
//精确坐标
cornerSubPix(gray,corners,Size(10,10),Size(-1,-1),TermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,500,0.003));
//画角点
drawChessboardCorners(src,Size(ChessBoardSize_w,ChessBoardSize_h),corners,findcorner_result);
imshow("Chess",src);
std::cout<<"print any key to read the next pic"<<std::endl;
waitKey();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: