- 背景
树莓派安装了ubuntu mate,使用opencv读取两个摄像头时,会出现一个摄像头timeout,开始以为是树莓派问题,后来发现台式机的ubuntu也无法读取两个摄像头。
- 解决方法
为摄像头读取的图像格式没设置好,添加一行代码即可
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')) # 根据摄像头像素模式修改
- 完整代码
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()
- 根据以上的,修改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>
- 上述会有警告,再次修改为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>
- 使用mobaxterm突然遇到个问题,即使用rqt、远程桌面等,都没办法显示了。
文章出处登录后可见!
已经登录?立即刷新