Python 为什么cv2.VideoCapture()返回RPi摄像头模块上的重复帧序列(使用uv4l)
我正在使用一个树莓PI&RPi摄像头模块为一个跟线机器人捕捉视频。我正在使用Opencv函数&uv4l驱动程序。我的问题是,我从cv2.VideoCapture返回的帧是4个相同帧的序列,导致低帧速率约为5 fps。还有其他人遇到过这个问题吗? 以下是用于捕获视频的代码:Python 为什么cv2.VideoCapture()返回RPi摄像头模块上的重复帧序列(使用uv4l),python,opencv,Python,Opencv,我正在使用一个树莓PI&RPi摄像头模块为一个跟线机器人捕捉视频。我正在使用Opencv函数&uv4l驱动程序。我的问题是,我从cv2.VideoCapture返回的帧是4个相同帧的序列,导致低帧速率约为5 fps。还有其他人遇到过这个问题吗? 以下是用于捕获视频的代码: def open_camera(cam_id = 0): cap = cv2.VideoCapture(cam_id) cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 2
def open_camera(cam_id = 0):
cap = cv2.VideoCapture(cam_id)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 240);
cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320);
cap.set(cv2.cv.CV_CAP_PROP_FPS, 30);
return cap
def get_frame(device):
ret, img = device.read()
if (ret == False): #failed to capture
print >> sys.stderr, "Error capturing from vid dev"
return None
return img
def run(wh,sh,wh2,sh2):
find_colour(wh,sh,wh2,sh2)
dev = open_camera(0)
while True:
img = get_frame(dev) # get frame from cam
if img is not None:# if possible to get imag
#program code
else: #if failed to cap
#print 'failed to cap'
controller.forward(128)#stop
break
return()
当为True时,您是否缺少以下块的缩进:?@Antonio,对不起Antonio,缩进只是将代码粘贴到“已更正”中的一个错误。在实际的程序中,这不是问题。如果注释掉行cap.set…CV\u cap\u PROP\u FPS。。。让它以自然帧率运行?在C++ OpenCV中,如果有一个帧,如果您的程序比帧速器快,则GETHyFrimar等效项将返回最新的帧,并阻止直到新的帧出现为止。我认为python也是如此。迈克,你是个传奇。。问题解决了伙计们,这个问题还没有解决,仍然会遇到同样的问题