在做单目标定使用vc2013+opencv2.4.9环境写代码时,遇到Mat类型访问矩阵元素出错的bug,现在问题解决了,所以想在这里简单记一下,
Mat cameraMatrix = Mat(3, 3, CV_32FC1, Scalar::all(0)); /* 摄像机内参数矩阵 */
vector<Mat> tvecsMat; /* 每幅图像的旋转向量 */
vector<Mat> rvecsMat; /* 每幅图像的平移向量 */
Mat rotation_matrix = Mat(3, 3, CV_32FC1, Scalar::all(0)); /* 保存每幅图像的旋转矩阵 */
Mat M1 = Mat(3, 4, CV_32FC1, Scalar::all(0));
vector<Mat> M2;
vector<Mat> M; /* 投影矩阵M,由矩阵M1、M2相乘得 */
在用以下函数标定完得到内外参之后,
calibrateCamera(object_points, image_points_seq, image_size, cameraMatrix, distCoeffs, rvecsMat, tvecsMat, 0);
我再存入M1、M2矩阵中,最后得到投影矩阵M
在存入M1、M2的过程中,我遇到了Mat类型访问矩阵元素出错,以下语句:
//由内参得到M1
M1.at<float>(0, 0) = cameraMatrix.at<float>(0, 0);
M1.at<float>(0, 1) = cameraMatrix.at<float>(0, 1);
M1.at<float>(0, 2) = cameraMatrix.at<float>(