vs2015与opencv4.5.5视差图生成特征值检测
时间: 2023-11-09 16:10:33 浏览: 96
win10+vs2019+opencv4.5.5+opencv_contrib
5星 · 资源好评率100%
你可以使用OpenCV库中的SGBM算法来生成视差图,并使用OpenCV库中的ORB或SIFT算法来进行特征值检测。
以下是一个简单的示例代码:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat imgL = imread("left.png", IMREAD_GRAYSCALE);
Mat imgR = imread("right.png", IMREAD_GRAYSCALE);
// SGBM算法生成视差图
Ptr<StereoSGBM> sgbm = StereoSGBM::create(0, 64, 5, 8 * 5 * 5, 32 * 5 * 5, 1, 63, 10, 100, 32, StereoSGBM::MODE_SGBM);
Mat disp;
sgbm->compute(imgL, imgR, disp);
// 显示视差图
Mat disp8;
normalize(disp, disp8, 0, 255, NORM_MINMAX, CV_8U);
imshow("Disparity", disp8);
// ORB算法进行特征值检测
Ptr<ORB> orb = ORB::create();
std::vector<KeyPoint> keypoints;
Mat descriptors;
orb->detectAndCompute(imgL, Mat(), keypoints, descriptors);
// 显示特征点
Mat imgKeyPoints;
drawKeypoints(imgL, keypoints, imgKeyPoints);
imshow("Key points", imgKeyPoints);
waitKey(0);
return 0;
}
```
其中,`left.png`和`right.png`是左右两张图像,可以通过摄像头拍摄或从文件中读取。`compute`函数会生成视差图,`detectAndCompute`函数会进行特征值检测,并返回检测到的关键点和对应的描述子。你可以根据自己的需求调整算法的参数来获得更好的效果。
阅读全文