cv::fisheye::StereoRectify()换为Opencv c++函数
时间: 2023-09-12 13:11:41 浏览: 42
在 OpenCV C++ 中,可以使用 `cv::fisheye::stereoRectify()` 函数进行鱼眼相机的双目矫正,其函数原型如下:
```cpp
void cv::fisheye::stereoRectify(
InputArray K1, InputArray D1, InputArray K2, InputArray D2,
Size imageSize, InputArray R, InputArray t,
OutputArray R1, OutputArray R2,
OutputArray P1, OutputArray P2,
OutputArray Q, int flags = cv::CALIB_ZERO_DISPARITY,
Size newImageSize = Size()
);
```
其中各参数的含义如下:
- `K1`:左相机的内参矩阵。
- `D1`:左相机的畸变参数。
- `K2`:右相机的内参矩阵。
- `D2`:右相机的畸变参数。
- `imageSize`:图像的分辨率大小。
- `R`:左相机到右相机的旋转矩阵。
- `t`:左相机到右相机的平移向量。
- `R1`:输出参数,左相机矫正旋转矩阵。
- `R2`:输出参数,右相机矫正旋转矩阵。
- `P1`:输出参数,左相机投影矩阵。
- `P2`:输出参数,右相机投影矩阵。
- `Q`:输出参数,重投影矩阵。
- `flags`:标志位,可选参数,默认值为 `cv::CALIB_ZERO_DISPARITY`。
- `newImageSize`:新图像的分辨率大小,可选参数,默认值为空 `Size()`。
下面是一个示例代码:
```cpp
cv::Mat K1, D1, K2, D2, R, T;
// 填充内参矩阵、畸变参数、旋转矩阵和平移向量
cv::Size imageSize; // 填充图像分辨率大小
cv::Mat R1, R2, P1, P2, Q;
cv::fisheye::stereoRectify(
K1, D1, K2, D2, imageSize, R, T, R1, R2, P1, P2, Q, cv::CALIB_ZERO_DISPARITY
);
// 输出矫正后的参数
std::cout << "R1: " << R1 << std::endl;
std::cout << "R2: " << R2 << std::endl;
std::cout << "P1: " << P1 << std::endl;
std::cout << "P2: " << P2 << std::endl;
std::cout << "Q: " << Q << std::endl;
```