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

发布于:2025-07-30 ⋅ 阅读:(19) ⋅ 点赞:(0)



在 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/video1

USB 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 cv2

cap = 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("读取失败")
        break

    cv2.imshow("Camera", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

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

import cv2

cap = 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("读取失败")
        continue

    h, w, _ = frame.shape
    left = frame[:, :w//2]
    right = frame[:, w//2:]

    cv2.imshow("Left", left)
    cv2.imshow("Right", right)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.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 实现帧抓取验证相机有效性。


网站公告

今日签到

点亮在社区的每一天
去签到