每个摄像头可以单独工作,但是两个不能同时工作,其中一个读不了数据。

用户您好,请详细描述您所遇到的问题:

  1. 硬件:RDK X3 MD,底板:微雪CM4-IO-BASE-Acce D,摄像头:IMX335 5MP USB Camera (A)
  2. 问题描述:我的项目要用两个usb摄像头,现在问题是,每个摄像头可以单独工作,但是两个不能同时工作。
  3. 复现概率:必现

测试代码也很简单,如下:

#!/usr/bin/env python3

import sys

import signal

import os

from hobot_dnn import pyeasy_dnn as dnn

from hobot_vio import libsrcampy as srcampy

import numpy as np

import cv2

import colorsys

import time

cap1 = cv2.VideoCapture(8)

cap2 = cv2.VideoCapture(9)

if not cap1.isOpened() or not cap2.isOpened():

print(“open cam err”)

exit()

codec = cv2.VideoWriter_fourcc(‘M’,‘J’,‘P’,‘G’)

cap1.set(cv2.CAP_PROP_FOURCC, codec)

cap1.set(cv2.CAP_PROP_FPS, 30)

cap1.set(cv2.CAP_PROP_FRAME_WIDTH, 640)

cap1.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

cap2.set(cv2.CAP_PROP_FOURCC, codec)

cap2.set(cv2.CAP_PROP_FPS, 30)

cap2.set(cv2.CAP_PROP_FRAME_WIDTH, 640)

cap2.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

while True:

ret1, frame1 = cap1.read()

ret2, frame2 = cap2.read()

if not ret1 or not ret2:

print(“read frame err”)

break

cv2.imshow(“read1”, frame1)

cv2.imshow(“read2”, frame2)

if cv2.waitKey(10) & 0xFF == ord(‘q’):

break

cap1.release()

cap2.release()

cv2.destroyAllWindows()

运行结果是

read frame err

但是同样的代码,在别的平台运行没问题,两个摄像头都正常工作。

我也遇到了同样的问题,在pc虚拟机里可以同时打开两路,在开发板上就报错

好的,收到,我们会排期查看,解决后和您同步

你好,两个USB摄像头的无法同时读取图像,提示 No space left,这个是否已经解决了呢?

您好,目前的解决方法是将其中的某一路USB摄像头的帧格式设置为MJPG

usb带宽抢占问题,如下文所说,使用压缩图像格式可以减少带宽

import cv2

import sys

if__name__==“__main__”:

dev =“/dev/video”+str(sys.argv[1])

cap = cv2.VideoCapture(dev)

cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(‘M’, ‘J’, ‘P’, ‘G’))

ret, frame = cap.read()

while ret:

print(“[ Info: ]”, dev, " ", frame.shape())

ret, frame = cap.read()

改为MJPG,两路USB摄像头依然无法同时工作