使用nvidia jetson xavier nx调用usb摄像头时报错

报错内容

在这里插入图片描述
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

含有两个摄像头,/dev/video1为usb摄像头

查看usb摄像头可用的分辨率

v4l2-ctl --device=/dev/video1 --list-formats-ext

USB摄像头可用的分辨率及其对应的帧率

调用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()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值