当前位置: 首页 > 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.dtcms.com/a/304378.html

相关文章:

  • ubuntu 25.04 自带JS引擎gjs运行GTK with JavaScript 应用
  • B+树高效实现与优化技巧
  • 微服务 01
  • FastAPI后台任务:异步魔法还是同步噩梦?
  • Spring Boot with RabbitMQ:四大核心模式指南
  • 代码随想录算法训练营第三十天|0/1背包问题
  • 如何保证DoIP的网络安全?
  • rtp、rtcp、rtsp、rtmp协议详解
  • 嵌入式学习日志(十一)
  • 【windows系统服务端ssh免密登录配置坑】
  • 低空经济应用-无人机拉格朗日粒子追踪技术
  • 阿里云上进行k8s集群的配置
  • 电脑没有声音了怎么恢复 快速解决音频故障
  • 使用 Databend Cloud 归档 OceanBase 数据数据库
  • ElasticStack技术栈概述及Elasticsearch8.2.2集群部署并更换JDK版本为openjdk-17
  • 路由器路由协议详解:从 RIP 到 OSPF 的技术演进
  • TRACERT命令
  • 迅为RK3588开发板安卓GPIO调用-APP运行测试
  • HarmonyOS-ArkUI Web控件基础铺垫6--TCP协议- 流量控制算法与拥塞控制算法
  • LeetCode Hot 100 搜索二维矩阵
  • 抽象工厂模式 Abastract Factory Pattern
  • 从本地 Docker 部署的 Dify 中导出知识库内容(1.6版本亲测有效)
  • 设计一个高可用、可拓展、监控报警系统,使用普罗米修斯和grafana,并给出go实现
  • 无穿戴动作捕捉技术:驱动历史活化、乐园叙事与教育沉浸的文旅利器
  • JVM知识点(2)
  • 从协议栈到ath12k_mac_op_tx的完整调用路径
  • Leetcode——41. 缺失的第一个正数
  • 前端学习日记(十五)
  • 深入理解图像插值:从原理到应用
  • 答题抽奖活动小程序技术复盘