我对相机校准技术完全不了解......我正在使用OpenCV棋盘技术...我正在使用Quantum的网络摄像头......
这是我的观察和步骤..
我下面的C代码学习OpenCV的由Bradski用于校准.我的校准代码是
cvCalibrateCamera2(object_points,image_points,point_counts,cvSize(640,480),intrinsic_matrix,distortion_coeffs,NULL,NULL,CV_CALIB_FIX_ASPECT_RATIO);
Run Code Online (Sandbox Code Playgroud)在调用此函数之前,我将沿着内部矩阵的对角线的第一个和第二个元素作为一个,以保持焦距的比率恒定并使用 CV_CALIB_FIX_ASPECT_RATIO
随着棋盘距离的变化fx和fy变化fx:fy几乎等于1.有200到400的数量级cx和cy值.当我改变距离时fx,fy它们在300到700的数量级.
目前我把所有的失真系数都归零,因为我没有得到包括失真系数在内的好结果.我的原始图像看起来比未失真的图像更漂亮!!
我正确地进行了校准吗?我应该使用除CV_CALIB_FIX_ASPECT_RATIO?之外的任何其他选项吗?如果是的话,哪一个?
我正在尝试确定物体的距离和物体朝向相机的高度.是否可以或者我是否需要使用OpenCV calibrate.py来收集更多信息?我很困惑,因为罗技C920HD有3 MP并通过软件扩展到15 MP.
我有以下信息:
distance (mm) = 3.67(mm) * 180(mm) * 1080(px) / 511 (px) * (1/2.88)(inches)*2.54 (mm/inches)
Run Code Online (Sandbox Code Playgroud)
这给了我15.8厘米.它应该是约60厘米.
我究竟做错了什么?
感谢帮助!