标定板角点检测函数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
可是我输出时什么都没有;这个函数具体真没用?
...全文
5348 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
  • 打赏
  • 举报
回复
这个版块这么冷清吗?
内容概要:本文档介绍了一种基于Simulink的永磁同步电机(PMSM)转速控制仿真模型,重点实现了“超螺旋滑模控制器”与“有限时间扩张状态观测器(FTESO)”相结合的先进控制策略。该方法通过FTESO在有限时间内快速收敛并实时估计系统内部动态与外部扰动,结合超螺旋滑模控制实现无颤振的高精度转速跟踪,有效提升了电机在复杂工况下的动态响应性能与抗干扰能力。同时,系统支持转动惯量等关键参数的在线辨识,增强了控制系统的自适应性与鲁棒性。作为“顶刊复现”系列科研资料之一,本资源聚焦于现代非线性控制理论在电机驱动系统中的仿真验证与工程应用。; 适合人群:自动化、电气工程、控制科学与工程等相关专业的研究生、科研人员及具备一定MATLAB/Simulink基础的高年级本科生。; 使用场景及目标:① 深入学习和掌握滑模控制、扩张状态观测器(ESO)、自抗扰控制(ADRC)等现代非线性控制理论在永磁同步电机系统中的具体实现方法;② 复现高水平学术论文中的先进控制算法,提升科研仿真能力与理论转化实践的能力;③ 为高性能电机控制、扰动抑制、参数在线辨识等关键技术研究提供可靠的仿真平台与技术参考。; 阅读建议:建议读者首先研读相关控制理论的学术文献,深入理解超螺旋滑模与有限时间ESO的设计原理与数学基础,再结合Simulink模型逐模块分析其搭建逻辑与参数整定方法,重点关注扰动观测与前馈补偿的实现机制,并可通过设置不同负载扰动、参数突变等工况测试系统的鲁棒性与适应性。

4,509

社区成员

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

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