ARM AARCH64 内核 4 和 5:设置模式后,cv2 cap.read() 仅在 su

问题描述

我正在使用运行 Debian (buster) 和内核 4 和 5 的 ARM AARCH64 CoB(机载计算机)。发生以下问题:


    cap = cv2.VideoCapture(0)
    cap.set(3,1920)
    cap.set(4,1080)
    
    while cap.isOpened():
        ret,frame = cap.read()
        ...

如果代码在普通用户下执行,会打开捕获设备,正确设置视频模式,但是cap.read()会导致读取超时(无法从摄像头读取) .

如果代码在 sudo 下执行(以 root 身份运行),那么 cap.read() 可以正常工作,并且我会以正确的模式(在本例中为全高清)获得帧。

如果我不设置模式 (cap.set(3,1920),cap.set(4,1080)),那么它会读取在普通用户权限下运行的程序的帧,但以尽可能低的相机分辨率(sd 或 640x480)。

顺便说一下,cap.set(3,1920) 对应于 cap.set(cv2.CAP_PROP_FRAME_WIDTH,1920),而 cap.set(4,1080) 对应于 cap.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)

显然视频的 /etc/group entry 包括用户

video:x:44:user_name

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)