python - 将 Pi 相机模块与 OpenCV Python 结合使用

标签 python python-2.7 opencv raspberry-pi

我目前有一些代码,可以从 Pi 相机模块捕获静态图像,然后使用 OpenCV for Python 提供的 haarcascade xml 文件识别人脸。我使用的代码是本博客文章末尾显示的代码:http://rpihome.blogspot.co.uk/2015/03/face-detection-with-raspberry-pi.html ,但是它稍作修改(完全工作)。

唯一的问题是它目前只能识别静态图像上的脸部。有什么办法可以让我可以连续地从 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 的文档 here.

关于python - 将 Pi 相机模块与 OpenCV Python 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34026097/

相关文章:

Python如何提取pandas数据框中[]括号内的指定字符串并使用 bool 值创建一个新列

python - OpenCV - 3.0 相机校准给出错误

c++ - 使用 OpenCV 进行图像捕获 - 选择超时错误

python-3.x - 使用 OpenCV + Python 播放捕获的视频时出错

python-2.7 - 我正在尝试在 Python 中的 statsmodels 中运行 Dickey-Fuller 测试,但出现错误

python - 获取 Tornado URL 的匹配组

python - 为什么 Pylint 每个类需要两个公共(public)方法?

Python 列表理解以分组数据

python:字符串在内存中的存在方式

python - 使用列和行值的平均值填充 NA 值