#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main(void)
{
//变量定义
CvSize Pattern_size = (6, 9);//棋盘中每一行和每列角点的个数
Mat Original_Picture;
CvPoint2D32f *corners; //用于存放角点的容器
int found;
int corner_count; //输出的角点数
corners = new CvPoint2D32f[6 * 9];
//1.0读取图像
VideoCapture capture(0);
while (1)
{
capture >> Original_Picture;
//Mat Original_Picture = imread("1.jpg");//并转化为灰度
cvtColor(Original_Picture, Original_Picture, CV_RGB2GRAY);
Mat copy = Original_Picture.clone(); //复制源图像到一个临时变量中,作为感兴趣区域
Original_Picture *= 1.0 / 255;
//2.0初始化单帧数据(提取角点)
found = cvFindChessboardCorners(&Original_Picture, cvSize(9, 6),
corners,&corner_count, CV_CALIB_CB_ADAPTIVE_THRESH );
cvFindCornerSubPix(&Original_Picture, corners, corner_count, cvSize(11, 11), cvSize(-1, -1), cvTermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));
//绘制检测到的角点
cvDrawChessboardCorners(&Original_Picture, cvSize(9, 6), corners, corner_count, found);
imshow("角点标识图", Original_Picture);
imshow("ok", Original_Picture);
waitKey(15);
}
return 0;
}
|