Python 树莓皮
嗨,我正在努力提高自己,我对覆盆子皮感兴趣。我想开发一个学生项目与树莓皮,树莓皮相机和tft屏幕。它包括,当raspi摄像机检测到一个人脸时,显示一个电影,而不检测任何人脸显示其他电影。我编写了如下代码。我使用了python opencv omxplayer libs。当我运行代码时,如果没有检测到人脸,没有播放视频,但是如果检测到人脸,视频会非常严重地打开和关闭,视频不会出现,只有黑色阴影快速地在屏幕上出现和消失。谢谢你的帮助。问候Python 树莓皮,python,opencv,raspberry-pi,omxplayer,Python,Opencv,Raspberry Pi,Omxplayer,嗨,我正在努力提高自己,我对覆盆子皮感兴趣。我想开发一个学生项目与树莓皮,树莓皮相机和tft屏幕。它包括,当raspi摄像机检测到一个人脸时,显示一个电影,而不检测任何人脸显示其他电影。我编写了如下代码。我使用了python opencv omxplayer libs。当我运行代码时,如果没有检测到人脸,没有播放视频,但是如果检测到人脸,视频会非常严重地打开和关闭,视频不会出现,只有黑色阴影快速地在屏幕上出现和消失。谢谢你的帮助。问候 from picamera.array import PiR
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 )
这里的问题在while指令中。当程序在while循环中检测到一个面时。在这里,程序继续杀死omxplayer并开始播放电影。
尝试删除while循环,看看代码是否有效。我认为您应该在这里更好地解释这个问题。我听不懂最后一句话。谢谢你的重播,我编辑了。再次感谢你的回复。我删除了指令。现在,当没有检测到人脸时,视频看起来像旧代码中检测到的人脸,视频的打开和关闭非常严重,视频没有出现,只有黑影在屏幕上快速出现和消失。你对这种情况有什么建议吗?你能发布一个问题的截图吗?我拍了一段2秒钟的视频。我加入了youtube。链接:如果你想,我可以拍更长的视频