在OpenCV Python中使用Pi摄像头模块

在OpenCV Python中使用Pi摄像头模块,python,python-2.7,opencv,raspberry-pi,Python,Python 2.7,Opencv,Raspberry Pi,我目前有一些代码,可以从Pi摄像头模块捕获静态图像,然后使用OpenCV for Python提供的haarcascade xml文件识别人脸。我正在使用的代码是这篇博文末尾显示的代码:,但是它被稍微修改了一下(完全工作) 唯一的问题是,它目前只识别静止图像上的人脸。有没有办法让我可以连续地从Pi摄像机直接流到OpenCV,然后在窗口中处理人脸和人脸周围的显示框,而不是将单个帧保存到文件中?我在网上尝试过几种不同的教程,但它们似乎都不适合我。没有尝试过,但这应该可以 from picamera.

我目前有一些代码,可以从Pi摄像头模块捕获静态图像,然后使用OpenCV for Python提供的haarcascade xml文件识别人脸。我正在使用的代码是这篇博文末尾显示的代码:,但是它被稍微修改了一下(完全工作)


唯一的问题是,它目前只识别静止图像上的人脸。有没有办法让我可以连续地从Pi摄像机直接流到OpenCV,然后在窗口中处理人脸和人脸周围的显示框,而不是将单个帧保存到文件中?我在网上尝试过几种不同的教程,但它们似乎都不适合我。

没有尝试过,但这应该可以

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的文档

它的加载似乎很好,然后Pi摄像头的LED灯亮了几秒钟,但是Python Shell随机重新启动。知道为什么吗?