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

时间:2013-06-17 19:59:15

标签: opencv ubuntu beagleboard

我在uagntu上使用opencv on beaglebone black。我有一个usb相机通过USB集线器连接到比格犬骨头。当我尝试运行我的程序时,我得到连续的“选择超时”错误。我按照this suggestion启用了模块跟踪,它给了我

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

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

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,同样的错误记录在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