标定板角点检测函数cvFindChessboardCorners怎么使用

chenxue1111 2013-05-31 06:21:25
希望通过cvFindChessboardCorners提取标定板的角点并记录坐标。
#include <iostream>
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/legacy/legacy.hpp"
using namespace std;


//by Huang, Haiqiao 25 Jun. 2011, fzyhhq@bift.edu.cn
//http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=14214

int main( )
{
cout<<"Draw Chess OpenCV!"<<endl;
char* filename="..//Image2.tif";
IplImage* imgRGB = cvLoadImage(filename);
IplImage* imgGrey = cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE);

if (imgGrey==NULL){//image validation
cout<< "No valid image input."<<endl;
char c=getchar();
return 1;
}

//-------find chessboard corners--------------
int corner_row=13;//interior number of row corners.(this can be countered by fingers.)
int corner_col=12;//interior number of column corners.
int corner_n=corner_row*corner_col;
CvSize pattern_size=cvSize(corner_row,corner_col);
CvPoint2D32f* corners=new CvPoint2D32f[corner_n];
int corner_count;

int found=cvFindChessboardCorners(//returning non-zero means sucess.
imgGrey,// 8-bit single channel greyscale image.
pattern_size,//how many INTERIOR corners in each row and column of the chessboard.
corners,//a pointer to an array where the corner locations can be recorded.
&corner_count,// optional, if non-NULL, its a point to an integer where the nuber of corners found can be recorded.
CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUADS// check page 382-383.

);
cout<<"corner_count = "<<corner_count;
//-------Draw the corner pattern-------
cvDrawChessboardCorners(
imgRGB,
pattern_size,
corners,
corner_count,
found
);

//to summary a bit of findings.
cout<<"found="<<found<<endl;
cout<<"x="<<corners[2].x;
cout<<",y="<<corners[2].y<<endl;

cvNamedWindow("Find and Draw ChessBoard", 0 );
cvShowImage( "Find and Draw ChessBoard", imgRGB );

cvWaitKey(0);

cvReleaseImage(&imgGrey);
cvReleaseImage(&imgRGB);
cvDestroyWindow("Find and Draw ChessBoard");

return 0;
}

代码来源于http://www.opencv.org.cn/forum/viewtopic.php?p=49755#p49755
可是我输出时什么都没有;这个函数具体真没用?
...全文
5191 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceshan 2015-12-07
  • 打赏
  • 举报
回复
同问!楼主的问题解决了吗?
yuan874380 2015-09-09
  • 打赏
  • 举报
回复
haoyong
jsrg2012 2015-04-10
  • 打赏
  • 举报
回复
好用
sxjm522 2014-08-13
  • 打赏
  • 举报
回复
我的标定板也是13*12 但是调用这个函数后,存储角点的buf始终内容没变
bssltx 2014-07-22
  • 打赏
  • 举报
回复
楼主的代码太给力了!!
xingma0910 2014-07-03
  • 打赏
  • 举报
回复
你确定你的内角点是每行13个,每列12个吗?我也遇到了你这个问题,一开始设置的内角点数太多,最后输出什么都没有。我用的棋盘是7*6的,但我一开始设置的是12*12.后来改为7*6,就有坐标输出了。
chenxue1111 2013-06-01
  • 打赏
  • 举报
回复
这个版块这么冷清吗?

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧