OpenCV 双光融合开发全攻略(C++ 版)
一、环境搭建与项目配置
1. 依赖安装(Ubuntu 20.04)
# 安装OpenCV官方库
sudo apt install libopencv-dev python3-opencv
# 验证安装
pkg-config --modversion opencv # 应输出4.5.5+
2. CMake 项目结构
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(opencv_fusion)
find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc calib3d)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(fusion_main
src/calibration.cpp
src/stereo_disparity.cpp
src/image_fusion.cpp
)
target_link_libraries(fusion_main ${OpenCV_LIBS})
3. 核心头文件包含
#include <opencv2/opencv.hpp>
#include <opencv2/calib3d.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace std;
二、双目视觉融合实现
1. 棋盘格校准(C++ 实现)
(1)角点检测与数据采集
Mat img = imread("calib_01.jpg");
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
Size chessboardSize(8, 6);
vector<Point2f> corners;
bool found = findChessboardCorners(gray, chessboardSize, corners,
CALIB_CB_ADAPTIVE_THRESH | CALIB_CB_FAST_CHECK);
if(found) {
cornerSubPix(gray, corners, Size(11, 11), Size(-1, -1),
TermCriteria(TermCriteria::EPS + TermCriteria::MAX_ITER, 30, 0.1));
drawChessboardCorners(img, chessboardSize, corners, found);
}
(2)相机参数计算
vector<vector<Point3f>> objPoints;
vector<vector<Point2f>> imgPoints;
// 世界坐标系角点(Z=0)
vector<Point3f> objp;
for(int i=0; i<chessboardSize.height; i++) {
for(int j=0; j<

最低0.47元/天 解锁文章
3159





