在Raspberry Pi和Python上控制USB网络摄像头拍照时间

时间:2014-10-28 10:36:26

标签: python pygame raspberry-pi webcam

我正在使用USB网络摄像头和Pygame在我的Raspberry Pi上拍照。这些图像将用于跟踪物体的移动,然后旋转电机。因此,恒定的帧速率会很好。 不幸的是,拍摄暗物体的照片似乎占用的时间几乎是明亮物体的4倍。我怀疑这是曝光时间较长的结果。

如果这确实是问题,有没有办法将曝光时间设置为固定数字?如果没有,我还能做什么?

以下代码的结果:

黑暗:(针对黑墙)
- 时长:14213毫秒
- 最小:12毫秒
- 最大:387毫秒
- 平均:142毫秒

明亮:(针对白墙)
- 时长:3550毫秒
- 最小:12毫秒
- 最大:67毫秒
- 平均:35毫秒

print "importing.."

import time
import pygame
import pygame.camera
from pygame.locals import *

# INITIALIZE CAMERA
print "\ninitializing.."
pygame.init()
pygame.camera.init()
camlist = pygame.camera.list_cameras()
cam = pygame.camera.Camera("/dev/video0", (320,240))
cam.start()

time.sleep(1)

# MEASURE TIME
print "running.."
begin = int(round(time.time() * 1000))

min = 1000
max = 0

for i in range(1, 100):
        start = int(round(time.time() * 1000))    
        img = cam.get_image()        
        stop = int(round(time.time() * 1000)) - start

        if(stop > max):
                max = stop
        if(stop < min):
                min = stop

        print "{}\t{} ms".format(i, stop)

duration = int(round(time.time() * 1000)) - begin

print "Duration: {} ms".format(duration)
print "Min:\t{} ms".format(min)
print "Max:\t{} ms".format(max)
print "Avg:\t{} ms".format(duration / 100)

1 个答案:

答案 0 :(得分:1)

只要您所需的帧速率足够低以适应最慢曝光,您就可以在处理每个帧之后进入睡眠状态,直到获得新帧为止。你已经有了开始第一帧的时间。完成第一帧后,添加所需的间隔以获得下一次开始,并计算到下一帧的睡眠时间。