当前位置: 首页 > news >正文

在 Ubuntu 下测试单目与双目相机

文章目录

  • 在 Ubuntu 下测试单目与双目相机:工具、步骤与问题排查全指南
    • 一、识别摄像头设备
      • 查看当前连接的摄像头设备编号:
      • 推荐使用 `v4l2-ctl` 工具查看设备信息:
      • 示例输出:
    • 二、查看摄像头支持的分辨率与格式
      • 输出示例说明:
    • 三、实时预览摄像头图像
      • 方法 1:使用 `ffplay`(命令行预览)
      • 方法 2:使用 `cheese`(图形界面预览)
    • 四、使用 Python + OpenCV 测试图像采集
      • 安装依赖:
      • 示例代码(读取并显示图像):
      • 双目拼接流的左右分割显示:
    • 五、保存图像抓拍验证分辨率
    • 六、常见问题排查
    • 七、总结与建议



在 Ubuntu 下测试单目与双目相机:工具、步骤与问题排查全指南

本文将系统介绍如何在 Ubuntu 系统中测试 笔记本内置单目摄像头 以及 外接 USB 双目摄像头,包括识别设备、预览图像、采集图像对、排查图像异常等操作,适用于 vSLAM、VIO、双目深度感知等开发场景。


一、识别摄像头设备

查看当前连接的摄像头设备编号:

ls /dev/video*

推荐使用 v4l2-ctl 工具查看设备信息:

sudo apt install v4l-utils
v4l2-ctl --list-devices

示例输出:

Chicony USB2.0 Camera: Chicony (usb-0000:02:03.0-1):/dev/video0/dev/video1USB Camera: USB Camera (usb-0000:02:03.0-2):/dev/video2/dev/video3

通常:

  • /dev/video0/1:笔记本内置摄像头;
  • /dev/video2/3:USB 外接双目摄像头(左右目分别占一个设备,或左右拼接为一个设备)。

二、查看摄像头支持的分辨率与格式

v4l2-ctl --device=/dev/video0 --list-formats-ext

输出示例说明:

  • 格式:MJPG(压缩)或 YUYV(无压缩)
  • 分辨率:常见有 640x4801280x7203840x1080(双目拼接)
  • 帧率:如 30 fps 表示正常视频流支持

三、实时预览摄像头图像

方法 1:使用 ffplay(命令行预览)

sudo apt install ffmpeg
# 单目摄像头
ffplay -f v4l2 -input_format mjpeg -video_size 640x480 -i /dev/video0

在这里插入图片描述

# 双目拼接流(如 1280x480 表示左右各 640x480)
ffplay -f v4l2 -input_format mjpeg -video_size 1280x480 -i /dev/video2

方法 2:使用 cheese(图形界面预览)

sudo apt install cheese
cheese

可直接拍照、预览画面,适用于单摄。


四、使用 Python + OpenCV 测试图像采集

安装依赖:

pip install opencv-python

示例代码(读取并显示图像):

import cv2cap = cv2.VideoCapture(0)  # 修改为 2 可测试双目cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)while True:ret, frame = cap.read()if not ret:print("读取失败")breakcv2.imshow("Camera", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

双目拼接流的左右分割显示:

import cv2cap = cv2.VideoCapture(2)  # 双目拼接图像设备cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)while True:ret, frame = cap.read()if not ret:print("读取失败")continueh, w, _ = frame.shapeleft = frame[:, :w//2]right = frame[:, w//2:]cv2.imshow("Left", left)cv2.imshow("Right", right)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

五、保存图像抓拍验证分辨率

使用 ffmpeg 拍照:

ffmpeg -f v4l2 -input_format mjpeg -video_size 640x480 -i /dev/video0 -frames 1 test.jpg

验证图像尺寸:

file test.jpg
# 输出应为:JPEG image data, 640 x 480

六、常见问题排查

问题现象原因与建议
图像下半部分绿屏 / 马赛克摄像头 MJPEG 数据不规范、分辨率设置过高、USB 带宽不足
No JPEG data found 报错FFmpeg 解码失败,尝试用 OpenCV 或切换为 YUYV 格式
摄像头编号 video2/3 不存在摄像头未插好或虚拟机未正确绑定 USB 设备
虚拟机中视频异常推荐在物理主机运行(虚拟机 USB 带宽或转发性能有限)

七、总结与建议

  • Ubuntu 支持通过 /dev/videoX 管理视频设备;
  • 推荐工具组合:v4l2-ctl(查看参数)、ffplay(预览)、OpenCV(自定义采集);
  • 双目拼接流需结合 OpenCV 分割左右图像;
  • 若设备识别异常、绿屏、数据错位,建议在主机下排查并降低分辨率测试;
  • 可搭配 ffmpeg 实现帧抓取验证相机有效性。

http://www.lryc.cn/news/603151.html

相关文章:

  • 影翎Antigravity将发布全球首款全景无人机,8月开启公测招募
  • python案例:基于python 神经网络cnn和LDA主题分析的旅游景点满意度分析
  • JAVA第五学:方法的使用
  • 实时画面回传的开发复盘
  • 【LeetCode 热题 100】34. 在排序数组中查找元素的第一个和最后一个位置——二分查找
  • Linux之网络部分-应用层协议 HTTP
  • Objective-c 初阶——异常处理(try-catch)
  • 第2章算法分析:大O符号的定义和性质
  • 第17章——多元函数积分学的预备知识
  • golang--通道和锁
  • springboot集成deepseek
  • c++: 尾置返回类型(Trailing Return Type)
  • 【MySQL基础篇】:MySQL常用数据类型的选择逻辑与正确使用
  • 前段面试题新版
  • 【分布式版本控制系统】Git的使用
  • 完整复现cacti的RCE
  • 【Python】自动化GIT提交
  • Linux:线程同步与线程互斥
  • SpringBoot原理揭秘--自动装配
  • LeetCode 2044.统计按位或能得到最大值的子集数目:二进制枚举/DFS回溯(剪枝)
  • Leaflet 综合案例 - 路径规划
  • 3. 卷积网络代码参数解读分析
  • 前端高级综合搜索组件 SearchBox 使用详解!
  • 4.DRF 认证--Authentication4.DRF 认证--Authentication
  • django ManyToManyField 如何添加数据
  • python-内存管理
  • Kubernetes --存储入门
  • 基于FPGA和DDS原理的任意波形发生器(含仿真)
  • 做了一款小而美的本地校验器
  • 【0基础PS】PS工具详解--选择工具--对象选择工具