OpenCV 双目摄像头标定+测距教程 您所在的位置:网站首页 手机到手如何检查摄像头像素 OpenCV 双目摄像头标定+测距教程

OpenCV 双目摄像头标定+测距教程

2024-05-29 07:07| 来源: 网络整理| 查看: 265

前言

本教程代码使用C++ 17,OpenCV版本4.9.0,开发环境Visual Studio 2022,编译环境MSVC。如果想使用Python开发OpenCV函数名称与参数大致一样。

关于如何安装OpenCV,本教程不包含,但是Window 环境下可用使用Vcpkg安装OpenCV,Vcpkg支持MSVC与CMake直接使用,Debian/Ubuntu Linux下可用使用apt安装libopencv-dev.

本教程使用的摄像头为HBVCAM摄像头,80°无畸变3mm

拍摄摄像头视频

本教程是交互式的相机矫正与测距,先需要学会使用OpenCV拍摄双目视频,本教程使用的摄像头是将双目合成为一张图传回,不同摄像头有不同传输方式,需要按情况修改代码。

摄像头直出图片// 相机拍摄示例代码 void videoCaptureTest(int cameraDeviceNo, bool useBinaryThreshold){ # ifdef _WIN32 // 禁用 Microsoft Media Foundation ,提升摄像头打开速度 auto res = _putenv("OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS=0"); # endif cv::VideoCapture capture; capture.open(cameraDeviceNo); // 设置摄像头参数 capture.set(cv::CAP_PROP_FRAME_WIDTH, 3840); capture.set(cv::CAP_PROP_FRAME_HEIGHT, 1080); capture.set(cv::CAP_PROP_FPS, 30); capture.set(cv::CAP_PROP_FOURCC, cv::CAP_OPENCV_MJPEG); // 设置窗口大小 cv::namedWindow("left", cv::WINDOW_GUI_EXPANDED); cv::namedWindow("right", cv::WINDOW_GUI_EXPANDED); cv::resizeWindow("left", 640, 480); cv::resizeWindow("right", 640, 480); cv::Mat frame; cv::Size combinedImageSize; while (true){ auto result = capture.read(frame); // 读取一帧图像 combinedImageSize = frame.size(); // 获取图像大小,双目图片 if(result){ //获取左右图像 auto leftImage = frame(cv::Rect(0, 0, combinedImageSize.width / 2, combinedImageSize.height)); auto rightImage = frame(cv::Rect(combinedImageSize.width / 2, 0, combinedImageSize.width / 2, combinedImageSize.height)); // 转换图像颜色 cv::Mat leftGray, rightGray; cv::cvtColor(leftImage, leftGray, cv:


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有