报错内容
cv2.error: OpenCV(4.1.1) /home/nvidia/host/build_opencv/nv_opencv/modules/highgui/src/window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘imshow’
报错原因
设置的分辨率、帧率不在USB摄像头支持的可用分辨率、帧率之内
解决方法
该视频提供了解决方法https://www.bilibili.com/video/av838776544/
安装v4l2-ctl检查摄像头上的设备
sudo apt install v4l-utils
检查设备上Camera清单
v4l2-ctl --device=/dev/video1 --list-formats-ext
查看usb摄像头可用的分辨率
v4l2-ctl --device=/dev/video1 --list-formats-ext
调用usb摄像头demo
将帧率设为640 * 480, 帧率设为25后,成功调用了usb摄像头
import cv2
# use camera 0
# camSet = 'nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM), width=3264, height=2464, framerate=21/1, format=NV12 ! nvvidconv flip-method=2 ! video/x-raw, width=640, height=480, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
camSet = 'v4l2src device=/dev/video1 ! video/x-raw,width=640,height=480,framerate=25/1 ! videoconvert ! appsink'
cam = cv2.VideoCapture(camSet)
while True:
_, frame = cam.read()
cv2.imshow('myCam', frame)
cv2.moveWindow('myCam', 0, 0)
if cv2.waitKey(1) == ord('q'):
break
cam.release()
cv2.destroyAllWindows()