opencv4.5.5中设置StereoBM参数setPreFilterType的程序
时间: 2023-12-03 19:43:14 浏览: 29
下面是一个简单的例子,演示如何使用OpenCV 4.5.5中的StereoBM算法,并设置setPreFilterType参数:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读取左右眼图像
Mat left_img = imread("left.png", IMREAD_GRAYSCALE);
Mat right_img = imread("right.png", IMREAD_GRAYSCALE);
// 创建StereoBM对象
Ptr<StereoBM> stereo = StereoBM::create();
// 设置算法参数
stereo->setBlockSize(21);
stereo->setPreFilterSize(9);
stereo->setPreFilterType(CV_STEREO_BM_PREFILTER_NORMALIZED_RESPONSE);
stereo->setPreFilterCap(31);
stereo->setMinDisparity(0);
stereo->setNumDisparities(64);
stereo->setTextureThreshold(10);
stereo->setUniquenessRatio(15);
stereo->setSpeckleWindowSize(100);
stereo->setSpeckleRange(32);
// 计算视差图
Mat disparity;
stereo->compute(left_img, right_img, disparity);
// 显示视差图
imshow("Disparity", disparity);
waitKey(0);
return 0;
}
```
在上面的代码中,我们首先使用imread()函数读取了左右眼图像。然后,我们创建了一个StereoBM对象,并使用setXXXX()函数设置了一些算法参数,包括setPreFilterType。最后,我们使用compute()函数计算视差图,并使用imshow()函数显示结果。