2017-01-26 8 views
1

안녕하세요 저는 자신을 개선하려고 노력하고 있습니다. 나는 라스베리 파이에 관심이 있습니다. 나는 라즈베리 파이, 라스베리 파이 카메라, tft 스크린으로 학생 프로젝트를 만들고 싶습니다. 그것은 raspi cam이 얼굴을 탐지 할 때, 하나의 영화를 표시하고 어떤 얼굴도 감지하지 못하면서 다른 영화를 표시합니다. 아래 코드를 작성했습니다. 나는 python opencv omxplayer libs를 사용했다. 코드를 실행할 때 얼굴이 감지되지 않으면 비디오가 재생되지 않지만 얼굴이 감지되면 비디오가 매우 심각하게 켜지거나 꺼지거나 비디오가 나타나지 않고 검정색 그림자 만 화면에 빠르게 나타납니다. 도움을 주셔서 감사합니다. 감사합니다라스베리 파이 Omxplayer OpenCV

from picamera.array import PiRGBArray 
from picamera import PiCamera 
import time 
import cv2 
import os 
import numpy 
from subprocess import Popen 

#setup movies 
movie1 = ("my_movie1_path") 
movie2 = ("my_movie2_path") 

camera = PiCamera() 
camera.resolution = (320, 240) 
camera.framerate = 60 
rawCapture = PiRGBArray(camera, size=(320, 240)) 

# Load a cascade file for detecting faces 
face_cascade = cv2.CascadeClassifier('my_path/lbpcascade_frontalface.xml') 

t_start = time.time() 
fps = 0 

# Capture frames from the camera 

for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True): 

    image = frame.array 

# Use the cascade file we loaded to detect faces 
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
    faces = face_cascade.detectMultiScale(gray) 
    print "1" 
    While True: 
    if len(faces) > 0 : 
     os.system('killall omxplayer.bin') 
     omcx = Popen(['omxplayer', '-b', movie2]) 
    else : 
     os.system('killall omxplayer.bin') 
     omcx = Popen(['omxplayer', '-b', movie1]) 


    #print "Found " + str(len(faces)) + " face(s)" 
    print "2" 

    rawCapture.truncate(0) 
+0

여기에서 문제를 더 잘 설명해야한다고 생각합니다. 나는 마지막 문장을 이해할 수 없다. –

+0

재생 해 주셔서 감사합니다. –

답변

1

여기서 문제는 while 명령입니다. 프로그램이 얼굴을 인식 할 때 while 루프에 입력하십시오. 여기 그는 계속해서 omxplayer를 죽이고 영화를 시작합니다.
while 루프를 제거하고 코드가 작동하는지 확인하십시오.

+0

답장을 다시 보내 주셔서 감사합니다. 나는 지시하는 동안 삭제했다. 이제 얼굴이 감지되지 않으면 비디오가 이전 코드에서 얼굴을 감지하는 것처럼 보이고 비디오가 매우 심각하게 켜지거나 꺼지거나 비디오가 나타나지 않고 검정색 그림자 만 빠르게 나타나거나 사라집니다. 이 상황에 대한 제안이 있습니까? –

+0

문제의 스크린 샷을 게시 할 수 있습니까? –

+0

나는 2 초 동안 비디오를 찍었습니다. 나는 YouTube에 추가했다. 링크 : https://youtu.be/NPIPnlGYMOU –