栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

VS C++基于OpenCV进行相机标定和使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

VS C++基于OpenCV进行相机标定和使用

记录一下自己实现的过程

首先找到自己opencv所在的目录找:

 然后通过VS新创一个工作环境将以上红框的三个部分放入到新建环境下;

1、首先是对 camera_calibration.cpp进行修改:

在头文件下添加:#pragma warning(disable:4996) 命令,不然运行会出错

 将以上注释部分修改为红框部分, in_VID5.xml 就是我们在opencv中复制的文件,

2、修改in_VID5.xml文件:

这里有和多地方需要进行修改,我就直接放图片了:

  3、修改VID5.xml里面的图片路径为自己图片的路径:

4、数据集的获取(自己进行拍摄其它博主建议是在16到25张):

(数据集这里一定要注意,尽量对着电脑拍)

 做完以上步骤直接运行camera_calibration.cpp文件,会有一个展示效果图和保存一个out_camera_data.xml文件,这就是我们所要使用的东西。

效果图(你训练时用了几张就会有集装效果图,这里就展示单个):

5、如何使用自己保存好的标定文件:
#include 
#include 
using namespace std;
using namespace cv;


int main()
{

	/// 读取一副图片,不改变图片本身的颜色类型(该读取方式为DOS运行模式)
	Mat src = imread("3.jpg");
	imshow("1", src);
	Mat distortion = src.clone();
	imshow("2", distortion);
	Mat camera_matrix = Mat(3, 3, CV_32FC1);
	Mat distortion_coefficients;


	//导入相机内参和畸变系数矩阵
	FileStorage file_storage("out_camera_data.xml", FileStorage::READ);
	file_storage["camera_matrix"] >> camera_matrix;
	cout << camera_matrix << endl;
	file_storage["distortion_coefficients"] >> distortion_coefficients;
	cout << distortion_coefficients << endl;
	file_storage.release();

	//矫正
	undistort(src, distortion, camera_matrix, distortion_coefficients);

	imshow("img", src);
	imshow("undistort", distortion);
	//imwrite("undistort.jpg", distortion);

	waitKey(0);
	return 0;
}

效果对比:
原图:

 效果图:

参考:​​​​​​利用opencv3标定单目相机(图片标定)和畸变校正_Pichairen-CSDN博客

物体根据相机位置显示_OpenCV相机标定与畸变校正_自闭本科生的博客-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号