相机标定代码相机标定代码
基于OPENCV与VS2010,实现对相机畸变参数的计算,标定,
基于OPENCV与VS2010,实现对相机畸变参数的计算,标定
基于OPENCV与VS2010,实现对相机畸变参数的计算,标定
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-11-17 11:15 摄像头标定
目录 0 2015-11-17 10:53 摄像头标定摄像头标定
文件 912 2015-11-16 18:49 摄像头标定摄像头标定.sln
文件 18944 2015-11-17 11:15 摄像头标定摄像头标定.suo
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_0.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_1.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_10.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_11.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_12.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_13.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_14.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_15.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_16.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_17.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_18.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_19.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_2.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_3.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_4.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_5.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_6.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_7.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_8.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_9.bmp
文件 11307 2015-11-17 10:54 摄像头标定摄像头标定CCalibration.cpp
文件 1426 2015-11-17 10:45 摄像头标定摄像头标定CCalibration.h
目录 0 2015-11-17 11:12 摄像头标定摄像头标定Debug
文件 2993 2015-11-17 11:12 摄像头标定摄像头标定Debug摄像头标定.Build.CppClean.log
文件 517 2015-11-17 11:12 摄像头标定摄像头标定Debug摄像头标定.log
文件 250 2015-11-17 10:55 摄像头标定摄像头标定Distortion.xml
文件 267 2015-11-17 10:55 摄像头标定摄像头标定Intrinsics.xml
............此处省略4个文件信息
/******************************************
* Copyright (C) 2015 HolaMirai(HolaMirai@163.com)
* All rights reserved.
*
* 文件名:CCalibration.cpp
* 摘要:相机标CCalibration类的定实现文件
* 当前版本:V1.0 2015年11月17日, HolaMirai 创建该文件
* 历史记录:
******************************************/
#include“CCalibration.h“
/*
* 函数名称:CCalibration
* 函数功能:类构造函数
* 函数入口:
* 输入参数:标定板横纵坐标角点数_board_sz 相邻两次图像获取的时间间隔_board_dt(单位:秒) 获取图像的总数_n_boards
* 输出参数:无
* 返 回 值:无
* 其它说明:
*/
CCalibration::CCalibration(CvSize _board_sz double _board_dt int _n_boards)
{
//标定板的信息
board_sz = _board_sz;
board_dt = _board_dt;
n_boards = _n_boards;
//为标定参数分配内存
intrinsic_matrix = cvCreateMat(33CV_32FC1);
distortion_coeffs = cvCreateMat(41CV_32FC1);
}
CCalibration::~CCalibration()
{
cvReleaseMat(&intrinsic_matrix);
cvReleaseMat(&distortion_coeffs);
}
/*
* 函数名称:calibrateFromCamera
* 函数功能:直接从相机实时获取标定板图像,用于标定
* 函数入口:
* 输入参数:五
* 输出参数:无
* 返 回 值:是否标定成功,true表示成功,false表示失败
* 其它说明:
*/
bool CCalibration::calibrateFromCamera()
{
cvNamedWindow(“Calibration“CV_WINDOW_AUTOSIZE);
cvNamedWindow(“Live“CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCreateCameraCapture( 0 );//将要标定的摄像头
assert( capture );
int board_n = board_sz.width * board_sz.height;//角点总数
CvMat* image_points = cvCreateMat(n_boards*board_n2CV_32FC1);// cvMat* cvCreateMat ( int rows int cols int type )
CvMat* object_points = cvCreateMat(n_boards*board_n3CV_32FC1);//cvCreateMat预定义类型的结构如下:CV_ (S|U|F)C
CvMat* point_counts = cvCreateMat(n_boards1CV_32SC1);//cvCreateMat矩阵的元素可以是32位浮点型数据(CV_32FC1),或者是无符号的8位三元组的整型数据(CV_8UC3)
CvPoint2D32f* corners = new CvPoint2D32f[ board_n ];
IplImage *image = cvQueryframe( capture );
//imgSize = cvGetSize(image);
IplImage *gray_image = cvCreateImage(cvGetSize(image)81);//subpixel 创建单通道灰度图像
int corner_count;
int successes = 0;//图像系列index
int step frame = 0;
//忽略开始前2s时间的图片
for (int i = 0; i < 33*2; i++)
{
image = cvQueryframe(capture);
cvShowImage(“Live“image);
cvWaitKey(30);
}
//获取足够多视场图片用于标定
while (successes < n_boards)
{
image = cvQueryframe(capture);
cvShowImage(“Live“ image);
cvWaitKey(33);//一帧的时间间隔
//每隔board_dt秒取一张图像
if ( (frame++ % ((int)(33 * board_dt)) ) == 0 )
{
//Find chessboard corners:
int found = cvFindChessboardCorners(image board_sz corners &corner_count
CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS);
if(found == 0) continue;//未正确找到角点,继续下一次
//Get Subpixel accuracy on those corners
cvCvtColor(image gray_image CV_BGR2GRAY); //转换为灰度图像
cvFindCornerSubPix(gray_image corners corner_count //cvFindChessboardCorners找到的角点仅仅是近似值,必须调用此函数达到亚像素精度,如果第一次定位...
cvSize(1111)cvSize(-1-1) cvTermCriteria( //角点时忽略调用此函数,那么会导致标定的实际错误
CV_TERMCRIT_EPS+CV_TERMCRIT_ITER 30 0.1 ));
// 如果该视场获得了好的结果,保存它
// If we go
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-11-17 11:15 摄像头标定
目录 0 2015-11-17 10:53 摄像头标定摄像头标定
文件 912 2015-11-16 18:49 摄像头标定摄像头标定.sln
文件 18944 2015-11-17 11:15 摄像头标定摄像头标定.suo
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_0.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_1.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_10.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_11.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_12.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_13.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_14.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_15.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_16.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_17.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_18.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_19.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_2.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_3.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_4.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_5.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_6.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_7.bmp
文件 3932214 2015-11-17 09:50 摄像头标定摄像头标定calib_8.bmp
文件 3932214 2015-11-16 23:18 摄像头标定摄像头标定calib_9.bmp
文件 11307 2015-11-17 10:54 摄像头标定摄像头标定CCalibration.cpp
文件 1426 2015-11-17 10:45 摄像头标定摄像头标定CCalibration.h
目录 0 2015-11-17 11:12 摄像头标定摄像头标定Debug
文件 2993 2015-11-17 11:12 摄像头标定摄像头标定Debug摄像头标定.Build.CppClean.log
文件 517 2015-11-17 11:12 摄像头标定摄像头标定Debug摄像头标定.log
文件 250 2015-11-17 10:55 摄像头标定摄像头标定Distortion.xm
文件 267 2015-11-17 10:55 摄像头标定摄像头标定Intrinsics.xm
............此处省略4个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)