树莓派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、远程桌面等,都没办法显示了。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年5月23日
下一篇 2022年5月23日

相关推荐