资源简介

使用VS2017+OpenCV,实现了黑白棋盘相机标定,求出相机内参矩阵、外参矩阵,还实现了鸟瞰图生成。 包含vs的解决方案、实验报告

资源截图

代码片段和文件信息

//--------------------------------------【程序说明】-------------------------------------------
// 程序说明:计算机视觉练习1
// 程序描述:摄像机标定及鸟瞰图生成
// 开发测试所用操作系统: Windows 10 64bit
// 开发测试所用IDE版本:Visual Studio 2017  Debug x64
// 开发测试所用OpenCV版本: 3.4.1
// 2019年10月 Created by 冯微伟
//------------------------------------------------------------------------------------------------
#include “stdafx.h“
#include 
#include   
#include   
#include 
#include

using namespace cv;
using namespace std;
//-----------------------------------【全局变量声明】--------------------------------------
//          描述:全局变量声明
//--------------------------------------------------------------------------------------------
int image_index = -1; //图像index用于枚举和计数
const int maxIndex = 11;
Size image_size;  //图像的尺寸
Size board_size = Size (9 6);   // 标定板上每行、列的角点数
vector image_corners;  // 每幅图像上检测到的角点数组
vector> all_corners; //所有图像角点数组
string filename;
const string filePath = ““;//e://opencv//projects//

Size cell_size = Size (100.0 100.0);  //实际测量得到的每个棋盘格的大小
vector> object_points;// 标定板上角点的三维坐标数组
Mat cameraMatrix = Mat (3 3 CV_32FC1 Scalar::all (0)); // 摄像机内参数矩阵
Mat distCoeffs = Mat (1 5 CV_32FC1 Scalar::all (0)); //摄像机的5个畸变系数:k1k2p1p2k3
vector tvecsMat;  //图像的旋转向量数组
vector rvecsMat;//图像的平移向量数组

//-----------------------------------【函数声明】--------------------------------------
//          描述:函数声明
//---------------------------------------------------------------------------------------

string addInexToName (int index string fileDirectory string tail);
void getImageCorners ();
void cameraCalibrate ();
void outputCalibrateResult ();
void undistortImages ();
void reProject ();

int main ()
{
getImageCorners ();//获得图像亚像素角点
cameraCalibrate ();//摄像机标定,得出内参外参
outputCalibrateResult ();//将标定结果存储到文件
undistortImages ();//矫正图像并保存
reProject ();//生成每张图像的鸟瞰图并保存
return 0;
}

//---------------------------【addInexToName()】----------------------------------------------
// 描述:给定图片的index,返回图片的filename
//-------------------------------------------------------------------------
string addInexToName (int index string fileDirectory string tail) {
char buff[200];
sprintf_s (buff “%02d“ index);
string m_int2str (buff);
string name = filePath + fileDirectory + “//test“ + m_int2str + tail;
return name;
}
//----------------------------【getImageCorners()】---------------------------------------------
// 描述:获得所有图像的角点,并进行亚像素精确化。填充 all_corners数组。
//           显示并保存标记过角点的图像。
//-------------------------------------------------------------------------
void getImageCorners () {
cout << “开始提取角点......\n“;
while (1)
{
image_index++;//从0-11,共12个数字
if (image_index > maxIndex) break;

Mat imageInput = imread (addInexToName (image_index “pic“ “.jpg“));
//读入第一张图片时获取图像宽高信息  
if (image_index == 0)
{
image_size.width = ima

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3894  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\caliberation_result.txt

     文件      15458  2019-10-12 20:55  相机标定和鸟瞰图生成_vs2017\cv_practice_1\cv_practice_1.cpp

     文件       8221  2019-10-12 19:09  相机标定和鸟瞰图生成_vs2017\cv_practice_1\cv_practice_1.vcxproj

     文件       1258  2019-10-12 19:09  相机标定和鸟瞰图生成_vs2017\cv_practice_1\cv_practice_1.vcxproj.filters

     文件        165  2019-10-12 19:09  相机标定和鸟瞰图生成_vs2017\cv_practice_1\cv_practice_1.vcxproj.user

     文件      78167  2019-10-12 19:06  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test00.jpg

     文件     151134  2019-10-12 20:52  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test00_a.jpg

     文件     207266  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test00_b.jpg

     文件     133908  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test00_c.jpg

     文件      76157  2019-10-12 19:06  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test01.jpg

     文件     141933  2019-10-12 20:52  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test01_a.jpg

     文件     194112  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test01_b.jpg

     文件     129194  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test01_c.jpg

     文件      81463  2019-10-12 19:06  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test02.jpg

     文件     151415  2019-10-12 20:52  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test02_a.jpg

     文件     202934  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test02_b.jpg

     文件     123821  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test02_c.jpg

     文件      69397  2019-10-12 19:06  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test03.jpg

     文件     131842  2019-10-12 20:52  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test03_a.jpg

     文件     183817  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test03_b.jpg

     文件     129213  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test03_c.jpg

     文件      73033  2019-10-12 19:06  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test04.jpg

     文件     140900  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test04_a.jpg

     文件     195045  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test04_b.jpg

     文件     131064  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test04_c.jpg

     文件      89356  2019-10-12 19:07  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test05.jpg

     文件     171444  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test05_a.jpg

     文件     220715  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test05_b.jpg

     文件     125250  2019-10-12 20:53  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test05_c.jpg

     文件      85023  2019-10-12 19:07  相机标定和鸟瞰图生成_vs2017\cv_practice_1\pic\test06.jpg

............此处省略90个文件信息

评论

共有 条评论