uvcvideo :将缓冲区标记为坏(错误位设置)

Posted

技术标签:

【中文标题】uvcvideo :将缓冲区标记为坏(错误位设置)【英文标题】:uvcvideo : Marking buffer as bad (error bit set) 【发布时间】:2013-06-17 19:59:15 【问题描述】:

我在 beaglebone black 上的 ubuntu 上使用 opencv。我有一个 USB 摄像头通过 USB 集线器连接到小猎犬骨头上。当我尝试运行我的程序时,我会收到连续的“选择超时”错误。我已经启用了模块跟踪:this suggestion 它给了我

uvcvideo:Dropping payload (out of sync)
uvcvideo:Marking buffer as bad (error bit set)

一遍又一遍。我认为“丢弃有效负载”没什么大不了的,因为当我在笔记本电脑上运行它时它会给我同样的错误,而且效果很好。但是缓冲区错误是 beaglebone 独有的,我不知道该怎么办。任何想法都会很棒。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,并且在 dmesg 中出现了同样的错误日志。我认为需要将捕获大小(即 CV_CAP_PROP_FRAME_WIDTH 和 CV_CAP_PROP_FRAME_WIDTH)设置为适合您相机的值。

经过一些实验,这对我来说在带有罗技高清网络摄像头 C525 的 BeagleBone Black 上很有效:

#! /usr/bin/env python

import cv2
import sys


vc = cv2.VideoCapture(0)
vc.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH,1280)
vc.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT,720)
if not vc.isOpened():
    sys.stderr.write('could not connect to camera! \n')
    sys.exit(1)

for count in range(0,5):
    success,frame = vc.read()
    if not success:
        sys.stderr.write('could not read image from cam \n')
        sys.exit(1)
    cv2.imwrite('capture_%02d.png' % count,frame)



vc.release()
vc = None

我不确定是否需要,但我还预先配置了相机:

root@beaglebone:~#  v4l2-ctl --set-fmt-video=width=1280,height=720,pixelformat=1

【讨论】:

太棒了!您帮助我的罗技高清网络摄像头 C525 与我的 BeagleBone 和 Angstrom Linux 发行版一起工作。 /etc/modprobe.d/uvcvideo.conf 中的“options uvcvideo nodrop=1 timeout=6000”,图像大小为 1280 x 720。之前无需调用 v4l2-ctl 来设置参数。谢谢! 好吧,刚刚做了一些测试,实际上只使用 1280 x 720 的图像大小就可以了!不需要模块参数...

以上是关于uvcvideo :将缓冲区标记为坏(错误位设置)的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu 16.04 安装 uvcvideo驱动

ubuntu 16.04 安装 uvcvideo驱动

pandas.io.common.CParserError:标记数据时出错。 C 错误:捕获缓冲区溢出 - 可能的输入文件格式错误

在 pandas 中读取 csv 文件时出错 [CParserError: 标记数据时出错。 C 错误:捕获缓冲区溢出 - 可能是格式错误的输入文件。]

vim状态栏详细设置

PAT甲题题解-1112. Stucked Keyboard (20)-(map应用)