cvFindExtrinsicCameraParams2函数的定义:

 void cvFindExtrinsicCameraParams2( const CvMat* object_points,
const CvMat* image_points,
const CvMat* intrinsic_matrix,
const CvMat* distortion_coeffs,
CvMat* rotation_vector,
CvMat* translation_vector );

 #include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <stdlib.h> int n_boards = ; //Will be set by input list
const int board_dt = ;
int board_w;
int board_h; void help()
{
printf("Calibration from disk. Call convention:\n\n"
"Where: board_{w,h} are the # of internal corners in the checkerboard\n"
" width (board_w) and height (board_h)\n"
" image_list is space separated list of path/filename of checkerboard\n"
" images\n\n"
"Hit 'p' to pause/unpause, ESC to quit. After calibration, press any other key to step through the images\n\n");
} int main(int argc, char* argv[])
{ CvCapture* capture;// = cvCreateCameraCapture( 0 );
// assert( capture ); if(argc != )
{
help();
return -;
}
help();
board_w = atoi(argv[]);
board_h = atoi(argv[]);
int board_n = board_w * board_h;
CvSize board_sz = cvSize( board_w, board_h );
FILE *fptr = fopen(argv[],"r");
char names[];
//COUNT THE NUMBER OF IMAGES:
while(fscanf(fptr,"%s ",names)==)
{
n_boards++;
}
rewind(fptr); cvNamedWindow( "Calibration" );
//ALLOCATE STORAGE
CvMat* image_points = cvCreateMat(board_n,,CV_32FC1);
CvMat* object_points = cvCreateMat(board_n,,CV_32FC1);
//CvMat* point_counts = cvCreateMat(1,CV_32SC1); CvMat *intrinsic = (CvMat*)cvLoad("Intrinsicsr.xml");
CvMat *distortion = (CvMat*)cvLoad("Distortionr.xml");
CvMat* rotation_vector=cvCreateMat(,,CV_32FC1);
CvMat* translation_vector=cvCreateMat(,,CV_32FC1);
CvMat* rotation_mat=cvCreateMat(,,CV_32FC1);
CvMat* jacobian=cvCreateMat(,,CV_32FC1); IplImage* image = ;// = cvQueryFrame( capture );
IplImage* gray_image = ; //for subpixel
CvPoint2D32f* corners = new CvPoint2D32f[ board_n ];
int corner_count; fscanf(fptr,"%s ",names);
image = cvLoadImage( names);
if(gray_image == && image) //We'll need this for subpixel accurate stuff
gray_image = cvCreateImage(cvGetSize(image),,); if(!image)
printf("null image\n"); int found = cvFindChessboardCorners(
image,
board_sz,
corners,
&corner_count,
CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS
); //Get Subpixel accuracy on those corners
cvCvtColor(image, gray_image, CV_BGR2GRAY);
cvFindCornerSubPix(gray_image, corners, corner_count,
cvSize(,),cvSize(-,-), cvTermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, , 0.1 ));
//Draw it cvDrawChessboardCorners(image, board_sz, corners, corner_count, found);
cvShowImage( "Calibration", image );
if( corner_count == board_n )
printf("Found = %d for %s\n",found,names);
for( int i=; i<board_n; ++i )
{
CV_MAT_ELEM(*image_points, float,i,) = corners[i].x;
CV_MAT_ELEM(*image_points, float,i,) = corners[i].y;
CV_MAT_ELEM(*object_points,float,i,) = i/board_w;
CV_MAT_ELEM(*object_points,float,i,) = i%board_w;
CV_MAT_ELEM(*object_points,float,i,) = 0.0f;
} cvFindExtrinsicCameraParams2(
object_points,image_points,intrinsic,distortion,rotation_vector,translation_vector
);
cvRodrigues2(
rotation_vector,rotation_mat,jacobian=NULL
);
cvSave("Rotationr.xml",rotation_mat);
cvSave("Translationr.xml",translation_vector);
}

最新文章

  1. Spring Quartz实现任务调度
  2. .NET面试题系列[11] - IEnumerable&lt;T&gt;的派生类
  3. PAT (Advanced Level) Practise:1027. Colors in Mars
  4. 如何能让hadoop或者spark等处理excel文件——保存成csv
  5. 新人学习Android开发遇到的小问题总结
  6. SharePoint2010新特性:InfoPath定义创建列表的界面
  7. JavaScript中正则表达式test()、exec()、match() 方法区别
  8. 关于LINUX文件与目录的问题说明
  9. iOS 手势操作:拖动、捏合、旋转、点按、长按、轻扫、自定义
  10. TI IPNC Web网页之流程分析
  11. Mac 与 PC 键盘布局对比
  12. poj 3689 树形dp
  13. make -f dc_debug.mak 提示错误&quot;/usr/bin/ld:can not find -l***&quot;解决办法
  14. C++ Variables and Basic Types Notes
  15. 转:PHP超时处理全面总结
  16. JavaScript获取css 行间样式,内连样式和外链样式的方式
  17. 1. 用U盘安装Centos6.5 + Win7 双系统
  18. wp8.1开发系列之安装包URI方案
  19. 关于$.ajax的请求格式
  20. LINUX 笔记-netstat命令

热门文章

  1. 紫书 习题8-8 UVa 1612 (贪心+精度)
  2. curl命令查看响应时间
  3. ZOJ 2601 Warehouse Keeper
  4. 求一个数组的最大k个数(java)
  5. PhpStorm Live Template加PHP短语法Short Open Tags打造原生模板
  6. angularjs 自定义服务
  7. hdu_1698线段树成段更新
  8. bzoj1009: [HNOI2008]GT考试(kmp+矩阵乘法)
  9. windows电脑空间清理
  10. NOIP2017 小凯的疑惑 解题报告(赛瓦维斯特定理)