资源简介
能用,有实验图片,能求畸变参数和摄像头内参 外参
代码片段和文件信息
#include
#include
#include
#include
// OpenCV
#include
#include
#include
#include
//void InitCorners3D(CvMat *Corners3D CvSize ChessBoardSize int Nimages float SquareSize);
void InitCorners3D(CvMat *Corners3D CvSize ChessBoardSize int NImages float SquareSize)
{
int CurrentImage = 0;
int CurrentRow = 0;
int CurrentColumn = 0;
int NPoints = ChessBoardSize.height*ChessBoardSize.width;
float * temppoints = new float[NImages*NPoints*3];
// for now assuming we‘re row-scanning
for (CurrentImage = 0 ; CurrentImage < NImages ; CurrentImage++)
{
for (CurrentRow = 0; CurrentRow < ChessBoardSize.height; CurrentRow++)
{
for (CurrentColumn = 0; CurrentColumn < ChessBoardSize.width; CurrentColumn++)
{
temppoints[(CurrentImage*NPoints*3)+(CurrentRow*ChessBoardSize.width + CurrentColumn)*3]=(float)CurrentRow*SquareSize;
temppoints[(CurrentImage*NPoints*3)+(CurrentRow*ChessBoardSize.width + CurrentColumn)*3+1]=(float)CurrentColumn*SquareSize;
temppoints[(CurrentImage*NPoints*3)+(CurrentRow*ChessBoardSize.width + CurrentColumn)*3+2]=0.f;
}
}
}
(*Corners3D) = cvMat(NImages*NPoints3CV_32FC1 temppoints);
}
int image_width = 640;//待标定图片的大小
int image_height = 480;
const int ChessBoardSize_w = 5;//图片中可标定的行角点数
const int ChessBoardSize_h = 4;//图片中可标定的列角点数
const CvSize ChessBoardSize = cvSize(ChessBoardSize_wChessBoardSize_h);
const int NPoints = ChessBoardSize_w*ChessBoardSize_h;//每张图片中的总点数
const int NImages=12;//待标定的图片数
int corner_count[NImages] = {0};
float SquareWidth = 23; //棋盘格子的边长23毫米。
CvMat *intrinsics;
CvMat *distortion_coeff;
CvMat *rotation_vectors;
CvMat *translation_vectors;
CvMat *object_points;
CvMat *point_counts;
CvMat *image_points;
void main()
{
IplImage *current_frame_rgb; //彩色图像头
IplImage *current_frame_gray;//灰色图像头
IplImage *chessBoard_Img;//棋盘格图像头
CvPoint2D32f corners[NPoints*NImages];//corners数组存放所有图片角点的坐标
chessBoard_Img =cvCreateImage(cvSize(image_width image_height) IPL_DEPTH_8U 3);
current_frame_gray = cvCreateImage(cvSize(image_width image_height) IPL_DEPTH_8U 1);
current_frame_rgb = cvCreateImage(cvSize(image_width image_height) IPL_DEPTH_8U 3);
int captured_frames=0;
for(captured_frames=0;captured_framesames++)
{
char filename[]=“00.jpg“; //说明:我把待标定的图片的名子依次命名为:01.jpg 02.jpg 03.jpg 04.jpg……
if(captured_frames<9)
filename[1]=(char)(captured_frames+49);
else if(captured_frames>=9&&captured_frames<=99){
int jjj;
jj=(captured_frames+1)/10;
j=(captured_frames+1)%10;
filename[0]=jj+48;
filename[1]=j+48;
}
else printf(“error too many images.......\n“);
chessBoard_Img=cvLoadImage( filename CV_LOAD_IMAGE_COLOR );
cvCvtColor(chessBoard_Img current_frame_gray CV_BGR2GRAY);
cvCopy(chessBoard_I
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A.SH. 38912 2009-11-12 19:50 摄像机标定程序1\Thumbs.db
文件 28056 2009-11-06 19:33 摄像机标定程序1\01.jpg
文件 26742 2009-11-06 19:33 摄像机标定程序1\02.jpg
文件 28542 2009-11-06 19:34 摄像机标定程序1\03.jpg
文件 30202 2009-11-06 19:34 摄像机标定程序1\04.jpg
文件 29695 2009-11-06 19:34 摄像机标定程序1\05.jpg
文件 25192 2009-11-06 19:34 摄像机标定程序1\06.jpg
文件 26076 2009-11-06 19:35 摄像机标定程序1\07.jpg
文件 33800 2009-11-06 19:35 摄像机标定程序1\08.jpg
文件 33484 2009-11-06 19:35 摄像机标定程序1\09.jpg
文件 32192 2009-11-06 19:36 摄像机标定程序1\10.jpg
文件 35004 2009-11-06 19:37 摄像机标定程序1\11.jpg
文件 33999 2009-11-06 19:38 摄像机标定程序1\12.jpg
文件 48640 2009-11-12 19:53 摄像机标定程序1\改正过的biaoding1.opt
文件 8994 2009-11-12 19:53 摄像机标定程序1\改正过的biaoding1.cpp
文件 197632 2009-11-12 19:53 摄像机标定程序1\Debug\vc60.idb
文件 135168 2009-11-12 19:53 摄像机标定程序1\Debug\vc60.pdb
文件 2319360 2009-11-12 19:53 摄像机标定程序1\Debug\改正过的biaoding1.bsc
文件 5559364 2009-11-12 19:52 摄像机标定程序1\Debug\改正过的biaoding1.pch
文件 282408 2009-11-12 19:53 摄像机标定程序1\Debug\改正过的biaoding1.ilk
文件 32537 2009-11-12 19:53 摄像机标定程序1\Debug\改正过的biaoding1.obj
文件 590848 2009-11-12 19:53 摄像机标定程序1\Debug\改正过的biaoding1.pdb
文件 233570 2009-11-12 19:53 摄像机标定程序1\Debug\改正过的biaoding1.exe
文件 0 2009-11-12 19:53 摄像机标定程序1\Debug\改正过的biaoding1.sbr
文件 3698 2009-11-10 20:53 摄像机标定程序1\改正过的biaoding1.dsp
文件 58368 2009-11-12 19:53 摄像机标定程序1\改正过的biaoding1.ncb
文件 995 2009-11-12 19:53 摄像机标定程序1\改正过的biaoding1.plg
文件 542 2009-11-10 14:51 摄像机标定程序1\改正过的biaoding1.dsw
目录 0 2009-11-10 14:47 摄像机标定程序1\Debug
目录 0 2009-11-10 14:46 摄像机标定程序1
............此处省略3个文件信息
相关资源
- 基于Opencv的交通流量实时检测
- 棋盘格标定图
- opencv视觉定位,C++编写的
- opencv循迹
- 任意曲线(S型等)调整图像色调,对
- Visual C++利用OpenCV对图像进行人脸识别
- 运用opencv的c++图像单点相关系数匹配
- VS2008 opencv MFC 计算米粒的个数及最大
- 14_车牌识别系统.zip
- 13_车型识别系统.zip
- 人脸跟踪基于opencv
- surf特征提取与匹配
- SRAD算法C++实现
- MFC+Opencv 摄像头保存为图像和视频
- TLD 全C++代码 OpenCV3.0.0 VS2013 工程文件
- [源码&文档] 基于OpenCV的室内目标跟踪
- 基于特征点匹配的视频稳像
- 制作自己的MFC MDI OPENCV程序框架
- 基于opencv开发的谷歌小恐龙的小游戏
- OpenCV图像模糊程序 by浅墨
- Opencv和vc++6.0一些常用图像处理算法程
- c++开发ocx入门实践三--基于opencv的简易
- opencv+c++实现人脸识别
- 基于OPENCV的完整图像处理程序
- MFC下opencv的图像处理源码
- OpenCV C++完整的车牌识别系统.rar
- OpenCV_MFC_版本1.0.1
- OpenCV_MFC_版本1.0
- opencv MFC 摄像头 人脸识别
- 实用的角度识别OPENCV
评论
共有 条评论