OpenCV14(检测和绘制棋盘角点)

来源:互联网 发布:北京数据堂 编辑:程序博客网 时间:2024/06/01 09:54

使用的函数是cvFindChessboardCorners和cvDrawChessboardCorners

要注意的是标准棋盘的的cvsize是7*7,要注意

不需要使用额外的for循环来圈定角点,cvDrawChessboardCorners全部搞定。

函数的参数按照VS的提示写好就可以啦~都比较直观。


源代码:

// calibrationtest.cpp : 定义控制台应用程序的入口点。// 棋盘角点的获取和绘制// 2016.9.15 Alex//#include "stdafx.h"#include "cv.h"#include "cxcore.h"#include "highgui.h"int _tmain(int argc, _TCHAR* argv[]){IplImage * src1 = cvLoadImage("D:\\PERSONAL\\Picture\\10.jpg",CV_LOAD_IMAGE_GRAYSCALE);IplImage * src = cvLoadImage("D:\\PERSONAL\\Picture\\10.jpg",CV_LOAD_IMAGE_COLOR);cvNamedWindow("Original");cvShowImage("Original",src);CvSize pattern_size = cvSize(7,7);//标准棋盘就是7*7,周围的角点不算,具体看结果图就知道什么意思啦CvPoint2D32f corners[50] = {NULL};int count(0);//输入图像必须是灰度,单通道,8/32位int k = cvFindChessboardCorners(src1,pattern_size,corners,&count,3);//cvDrawChessboardCorners输入必须是8为3通道cvDrawChessboardCorners(src,cvSize(7,7),corners,count,k);cvNamedWindow("process");cvShowImage("process",src);cvWaitKey(0);cvDestroyWindow("Original");cvDestroyWindow("Process");cvReleaseImage(&src);return 0;}

原图:


处理结果:


0 1