# dual_capture **Repository Path**: xifans/dual_capture ## Basic Information - **Project Name**: dual_capture - **Description**: `dual_capture` 是一个基于 OpenCV 的双摄像头采集与显示程序,支持同时打开两路视频流、缩放显示,并进行同步帧处理。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-26 - **Last Updated**: 2025-10-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dual_capture ## 📖 项目简介 `dual_capture` 是一个基于 OpenCV 的双摄像头采集与显示程序,支持同时打开两路视频流(USB 摄像头或 RTSP 网络流)、缩放显示,并进行同步帧处理。 本项目在 **迅为 RK3588 开发板** 上测试,通过 **MIPI 接口连接两路 OV18350 摄像头**。 --- ## 🧩 功能特性 - 同时捕获两路相机图像(支持 USB 摄像头或 RTSP 网络流) - 自动缩放显示至屏幕上半屏左右两区域(屏幕分成四等分,上半屏显示两个视频) - 可自动根据屏幕分辨率调整显示窗口大小 - 实时显示两路画面(分别为 “Left” 与 “Right” 窗口) - 按 `s` 键可同步抓拍两路图像并保存 - 自动创建保存目录:`images/left`、`images/right` --- ## ⚙️ 编译说明 ### 1️⃣ 配置与编译 ```bash mkdir build && cd build cmake .. make -j 16 ```` ### 2️⃣ 运行程序 #### 默认摄像头输入(USB 摄像头或者 MIPI 摄像头) ```bash ./dual_capture 22 31 # 使用gstreamer播放测试命令 gst-launch-1.0 \ v4l2src device=/dev/video22 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! queue ! tee name=t1 \ v4l2src device=/dev/video31 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! queue ! tee name=t2 \ t1. ! autovideosink \ t2. ! autovideosink ``` #### RTSP 网络流输入 ```bash ./dual_capture rtsp://192.168.3.4/videodevice rtsp://192.168.3.4/screenlive ``` #### 混合使用(USB + RTSP) ```bash ./dual_capture 22 rtsp://192.168.3.4/videodevice ``` --- ## 💾 图像保存规则 * 每次按下 `s` 键,会在两个摄像头目录下各保存一张图像 * 文件名为拍摄时的精确时间戳,例如: ``` images/left/20251026_153412_123.jpg images/right/20251026_153412_123.jpg ``` * 文件名格式说明: ``` YYYYMMDD_HHMMSS_mmm.jpg ``` 其中 `mmm` 为毫秒级时间,保证两张图像时间尽量一致 --- ## 🧠 同步逻辑说明 程序使用: ```cpp cap0.grab(); cap1.grab(); cap0.retrieve(frame0); cap1.retrieve(frame1); ``` 的方式进行同步采集,`grab()` 先锁定两路视频流帧,再统一 `retrieve()` 获取,从而尽可能减少两帧之间的时间差。 --- ## 🪛 常见问题 | 问题 | 可能原因及解决办法 | | ------- | ------------------------------ | | 无法打开摄像头 | 检查摄像头编号是否正确,或 RTSP 地址是否有效 | | 图像卡顿 | 帧率或分辨率过高,可调整摄像头分辨率或抓取 FPS | | 保存失败 | 检查是否有写入权限或磁盘空间不足 | | 屏幕显示异常 | 检查屏幕分辨率,程序会自动适配屏幕的上半部分显示两个视频窗口 | --- ## 🔧 CMake 参数说明 | 变量名 | 说明 | 默认值 | | -------------- | ----------------- | --------------------------------------------- | | `PROJECT_NAME` | 工程名称 | dual_capture | | `OpenCV_DIR` | OpenCV CMake 模块路径 | `3rd/opencv-4.12.0-install/lib/cmake/opencv4` | --- ## 🧰 环境依赖 * CMake >= 3.5 * C++17 * OpenCV >= 4.0 --- ## 🧠 示例核心代码 ```cpp cv::Mat frame0, frame1, show0, show1; cv::resize(frame0, show0, cv::Size(dispW, dispH)); cv::resize(frame1, show1, cv::Size(dispW, dispH)); imshow("Left", show0); imshow("Right", show1); ``` --- ## 📄 许可证 MulanPSL2 License