【问题标题】:Controlling USB web camera photo capture time on Raspberry Pi and Python在 Raspberry Pi 和 Python 上控制 USB 网络摄像头照片捕获时间
【发布时间】:2014-10-28 10:36:25
【问题描述】:

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

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

下面的代码结果:

黑暗:(瞄准黑墙)
- 持续时间:14213 毫秒
- 最小:12 毫秒
- 最大值:387 毫秒
- 平均:142 毫秒

Bright:(瞄准白墙)
- 持续时间: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)

【问题讨论】:

  • 这不是树莓派自带的摄像头吗?根据 USB 相机型号,可能无法进行此类低级控制。最好包含相机型号,并尝试找到它的 Linux 驱动程序特定说明。

标签: python pygame raspberry-pi webcam


【解决方案1】:

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

【讨论】:

  • 是的,谢谢,我想到了这个方法。不幸的是,这太慢了
  • 但是由于我不会得到任何其他答案,并且因为这可以为其他有同样问题的人提供解决方案,所以我会接受它。
猜你喜欢
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
相关资源
最近更新 更多