树莓派ubuntu系统使用opencv同时读取两个摄像头显示timeout

  1. 背景

树莓派安装了ubuntu mate,使用opencv读取两个摄像头时,会出现一个摄像头timeout,开始以为是树莓派问题,后来发现台式机的ubuntu也无法读取两个摄像头。

  1. 解决方法

为摄像头读取的图像格式没设置好,添加一行代码即可

cap.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter_fourcc('M','J','P','G'))
# cap.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter_fourcc('U','Y','V','Y'))  # 根据摄像头像素模式修改
  1. 完整代码
import cv2
import numpy

# 读取视频流并显示
cap = cv2.VideoCapture(0)    #调整参数实现读取视频或调用摄像头
cap.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter_fourcc('M','J','P','G'))
while 1:
    ret, frame = cap.read()
#    cv2.imshow("cap", frame)
#    if cv2.waitKey(100) & 0xff == ord('q'):
#        break
    print('cap1')
cap.release()
#cv2.destroyAllWindows()
  1. 根据以上的,修改usb_cam的launch文件,参考:参考

<launch>

  <group ns="camera1">
      <node name="usb_cam1" pkg="usb_cam" type="usb_cam_node" output="screen" >
        <param name="video_device" value="/dev/video2" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="pixel_format" value="mjpeg" />
        <param name="camera_frame_id" value="usb_cam" />
        <param name="io_method" value="mmap"/>
        <param name="framerate" value="10" />
      </node>
  </group>

  <group ns="camera2">
      <node name="usb_cam2" pkg="usb_cam" type="usb_cam_node" output="screen" >
        <param name="video_device" value="/dev/video0" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="pixel_format" value="mjpeg" />
        <param name="camera_frame_id" value="usb_cam" />
        <param name="io_method" value="mmap"/>
        <param name="framerate" value="10" />
      </node>
  </group>
</launch>
  1. 上述会有警告,再次修改为uyvy即可
  GNU nano 4.8                                                                          usb_cam-test.launch
<launch>

  <group ns="camera1">
      <node name="usb_cam1" pkg="usb_cam" type="usb_cam_node" output="screen" >
        <param name="video_device" value="/dev/video2" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="pixel_format" value="uyvy" />
        <param name="camera_frame_id" value="usb_cam" />
        <param name="io_method" value="mmap"/>
        <param name="framerate" value="10" />
      </node>
  </group>

  <group ns="camera2">
      <node name="usb_cam2" pkg="usb_cam" type="usb_cam_node" output="screen" >
        <param name="video_device" value="/dev/video0" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="pixel_format" value="uyvy" />
        <param name="camera_frame_id" value="usb_cam" />
        <param name="io_method" value="mmap"/>
        <param name="framerate" value="10" />
      </node>
  </group>
</launch>


  1. 使用mobaxterm突然遇到个问题,即使用rqt、远程桌面等,都没办法显示了。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值