前言
如之前章节内容所述,相机内参标定的流程包括1)采集一些包含棋盘格的相机图像,2)检测棋盘格角点,3)标定计算相机内参与畸变系数,4)验证标定精度与效果。本章我们将开始具体的编程开发,首先完成一些功能性函数的实现。
注:相关代码在Windows平台运行。
保存相机图像
这里可以使用电脑自带摄像头进行标定,使用OpenCV的VideoCapture接口可打开摄像头获取图像数据。我们编写一个函数,其功能为打开制定id的摄像头(系统摄像头默认为0)并以指定帧间隔保存图像到某个文件夹下面,具体实现如下。
void SaveCameraImage(int camera_id, int save_frame_interval, char* save_img_path)
{
// 1.创建图像路径文件夹,注意save_img_path指定的路径的上一层路径所在文件夹必须存在
MyRmDir(save_img_path);
_mkdir(save_img_path);
// 2.打开指定id的摄像头,并设置图像分辨率为摄像头支持的最大分辨率
cv::VideoCapture cap;
cap.open(camera_id);
if