您的位置:首页 > 运维架构

OpenCV部分API翻译--相机标定相关

2017-08-29 21:04 483 查看
持续更新中…(C++版本)

calibrateCamera

根据对标定图案拍摄的几张图片,获得相机的内参和外参。

C++原型

double calibrateCamera(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags=0, TermCriteria criteria=TermCriteria( TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON) )

参数: 

objectPoints

它是一个对于标定图案空间坐标系中的图案的物点的坐标的vector容器的vector容器(比如说std::vector< std::vector< cv::vec3f>>)。外层vector容器包含了与输入的照片个数相同的物点vector容器。如果每张照片都是拍摄于同一个标定图案,那么显而易见的,所有的上述这些物点都是一样的。不过有时候我们有可能使用那些拍了部分标定图案的照片,甚至不同标定图案的照片,在这种情况下,这些物点则会不同。这些点的坐标虽然是3D的,但是考虑到它们在同一坐标系中,如果标定架也是一个平面,那么通常有意义的做法是把这个模型放入一个XY坐标系平面中并且将每个物点的Z坐标设为0。

imagePoints

它是一个关于标定图案物点的重投影的vector容器的vector容器(比如说std::vector< std::vector< cv::Vec2f>>)。imagePoints.size()和objectPoints.size()必须相等, imagePoints[i].size和 objectPoints[i].size()对于每个i都必须相等。

imageSize

图像的尺寸,只是用来初始化相机内参矩阵。

cameraMatrix

输出参数,输出一个形如

的3X3的浮点型相机矩阵。如果标志位

CV_CALIB_USE_INTRINSIC_GUESS或者CV_CALIB_FIX_ASPECT_RATIO被设立,那么fx, fy, cx, cy的部分或全部在调用这个函数之前就要被初始化。

distCoeffs

输出参数,输出一个关于畸变因子

的vector,可能有4,5或8个元素。

rvecs

输出参数。输出一个旋转矩阵(详见Rodrigues()) 来评估每幅图像(类型类似std::vector< cv::Mat>)。这就是说,通过每个k阶旋转矩阵以及它相应的k阶转移矩阵(见下一个输出参数的描述),可以使相应的标定图像从模型坐标系(物点在其中被定义)转换到世界坐标系中去。也就是在第k张图像中真实的标定图案的位置。(k=0.. M-1)

tvecs

输出参数。输出评估每幅图像的转移矩阵。

flags

标志位。可以是0,也可以是以下几个值的组合:

CV_CALIB_USE_INTRINSIC_GUESS 相机矩阵包含深度优化后的fx,fy,cx,cy的初始值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv c++ 相机标定