2014-09-01 4 views
1

나는 '파이썬 세계'에서 새로운데, 나는 내 아이들을위한 포토 블록을 만들려고 노력하고있다. 나는 picamera를 사서 그것에 대한 파이썬 스크립트를 작성했습니다.GUI로 파이 카메라 프리뷰 - 라즈베리 파이

python 스크립트는 간단합니다 (예 : picam의 예와 같이) : picamera를 열고 미리보기 창을 표시하고 5 초 동안 잠자기 한 후 사진을 찍습니다.

음 ... 지금까지, 아니 큰 문제가 ...

하지만 난이 Tkinter를 윈도우의 앞에 미리보기 창을 넣어하려고하면 작동하지 않습니다! 픽커 미리보기 이미지를 tkinter 프레임에 넣을 수는 없지만 미리보기 창으로 가짜 이미지를 만들 수는 있습니다. 하지만 프로그램을 실행할 때마다 카메라가 5 초 동안 나타나고 사진을 찍은 직후에 tkinter가 창을 만듭니다.

여기 (카메라 파일에서) 코드입니다, 내가 서브 프로세스를 시도하고 있지만, 아무것도 변경되지 : cam.py :

import picamera 
from time import sleep 


with picamera.PiCamera() as camera: 
     camera.preview_fullscreen=False 
     camera.preview_window=(620, 320, 640, 480) 

     camera.resolution=(640,480) 
     camera.start_preview() 
     camera.sharpness = 10 
     camera.contrast = 30 
     camera.vflip=False 
     camera.hflip=False 
     camera.exposure_mode = 'auto' 

     sleep(10) 
     #camera.stop_preview() 
     #camera.close() 

gui.py :

여기

코드입니다

from Tkinter import * 
import RPi.GPIO as GPIO 
import Image 
from PIL import Image, ImageTk 
from subprocess import Popen, PIPE 

class Tela(object): 
     def __init__(self,master, **kwargs): 
       self.master=master 
       pad=3 
       self.geom='200x200+0+0' 
       master.geometry("{0}x{1}+0+0".format(master.winfo_screenwidth()-pad, 
master.winfo_screenheight()-pad)) 




     def toggle_geom(self, event): 
       geom=self.master.winfo_geometry() 
       print(geom,self._geom) 
       self.master.geometry(self._geom) 
       self._geom=geom 

win = Tk() 
win.title("test") 
app=Tela(win) 
frame = Frame(win) 


frame.pack() 

proc=Popen(["python","cam.py"],stdout=PIPE) 
output=proc.communicate()[0] 
print output 


win.mainloop() 

답변

0

다니엘! 이 문제는 gui.py의 마지막 줄 앞 줄에 있습니다. 왜냐하면 의사가 메서드()를 사용할 때 프로세스가 종료 될 때까지 대기하므로 미리보기가 실행 중이거나 GUI가 실행 중이기 때문입니다.