从网络摄像头保存图像,总是两个图像

时间:2013-08-17 11:40:45

标签: python pygame webcam raspberry-pi

我熟悉编程,但不熟悉python或linux。我正在尝试创建安全摄像头的覆盆子pi中使用python进行编程。这是我测试当前问题的代码:

#!/usr/bin/python
import pygame, sys
from pygame.locals import *
from datetime import datetime
import pygame.camera
import time

pygame.init()
pygame.camera.init()

width = 640
height = 480

pic_root = "/root/cam/"

cam = pygame.camera.Camera("/dev/video0",(width,height),"RGB")

cam.start()

while True:
    raw_input("press enter")
    image = cam.get_image()
    filename = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") +'.jpg'
    filepath = pic_root+filename
    pygame.image.save(image, filepath)

因此,当我按回车键时,会从网络摄像头拍摄并保存图像。但是图像总是背后有两个图像。无论保存图像之间有多长时间,前两个总是非常暗淡,就好像网络摄像头刚启动一样,其余部分总是两个图像迟到。

因此,如果我拍摄了5张图像,一张用一只手指向上,然后用两根手指等,我最终会得到两张黑色图像,然后是前三幅图像。 1,2和3指。好像图像存储在某处,然后当我尝试保存实时图像时,它会拉出一个旧图像。

我在这里遗漏了什么吗?有什么问题?

1 个答案:

答案 0 :(得分:0)

首先,我不熟悉Pygame(但我使用OpenCV进行了很多快照捕获 - 这是我的一个项目:http://vmlaker.github.io/wabbit。)

我改变了你的代码,以便在每次迭代时你1)开始,2)拍摄快照,3)停止相机。这样做效果会好一点,因为它只有一个图像在后面(而不是两个)。旧的图像从前一次运行中如何徘徊仍然很奇怪......我还没弄明白如何冲洗相机。注意我也改变了pic_root,而不是无限循环,我只使用3次迭代:

from datetime import datetime
import pygame
import pygame.camera

pygame.init()
pygame.camera.init()

width = 640
height = 480

pic_root = './'

cam = pygame.camera.Camera("/dev/video0",(width,height),"RGB")

#cam.start()

for ii in range(3):
    raw_input("press enter")
    cam.start()
    image = cam.get_image()
    cam.stop()
    filename = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") +'.jpg'
    filepath = pic_root+filename
    pygame.image.save(image, filepath)