记录一下自己实现的过程
首先找到自己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博客
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)