2017-01-26 20 views
1

こんにちは私は自分自身を改善しようとしています。私はラズベリーパイに興味があります。ラズベリーパイ、ラズベリーパイカメラ、tftスクリーンの学生プロジェクトを開発したい。これは、raspi camが顔を検出すると、1つの映画を表示し、他の映画を表示していない顔を検出します。私は以下のようなコードを書いた。私は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 –

関連する問題