我目前有一些代码可以从Pi相机模块中捕获静态图像,然后使用随OpenCV for Python提供的haarcascade xml文件识别面部。我正在使用的代码是在本博文末尾显示的代码:http://rpihome.blogspot.co.uk/2015/03/face-detection-with-raspberry-pi.html,但它稍作修改(完全正常工作)。
唯一的问题是它目前只能识别静止图像上的脸部。是否有任何方法可以使我可以连续从Pi Camera直接流式传输到OpenCV,然后在窗口中处理面部和显示框,而不是将单个帧保存到文件中?我已经在线尝试了几个不同的教程,但它们似乎都不适合我。
答案 0 :(得分:3)
没试过,但这应该有效。
from picamera.array import PiRGBArray
from picamera import PiCamera
import cv2
import time
camera = PiCamera()
camera.resolution = (320, 240)
camera.framerate = 30
rawCapture = PiRGBArray(camera, size=(320, 240))
display_window = cv2.namedWindow("Faces")
face_cascade = cv2.CascadeClassifier('path_to_my_face_cascade.xml')
time.sleep(1)
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
image = frame.array
#FACE DETECTION STUFF
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 5)
for (x,y,w,h) in faces:
cv2.rectangle(image,(x,y),(x+w,y+h),(255,0,0),2)
#DISPLAY TO WINDOW
cv2.imshow("Faces", image)
key = cv2.waitKey(1)
rawCapture.truncate(0)
if key == 27:
camera.close()
cv2.destroyAllWindows()
break
查看picamera here.
的文档