分享

Flask Web 框架中的 OpenCV 人脸检测部署

 风声之家 2022-08-17 发布于江苏

Flask Web 框架中的 OpenCV 人脸检测部署

原创 磐怼怼 深度学习与计算机视觉 2022-08-17 11:40 发表于河南

图片

介绍

本文,我们将介绍使用 Flask API 部署进行人脸检测。OpenCV 是一个 Python 库,旨在解决计算机视觉问题。它用于各种应用,例如人脸检测、视频捕获、跟踪移动对象和对象披露。

Flask API

Flask 是一个广泛使用的微型 Web 框架,用于在 Python 中创建 API。它是一个简单而强大的 Web 框架,旨在快速轻松地启动,并能够扩展到复杂的应用程序。

什么是 Haarcascade

它是一种对象检测算法,用于识别图像或实时视频中的人脸。该算法使用边缘或线检测特征。

图片

现在让我们进入项目实现。

项目结构

图片

index.html

<!DOCTYPE html>
<html>
 <link rel="stylesheet" href="https://maxcdn./bootstrap/3.4.1/css/bootstrap.min.css">
 <title>Dharmaraj - Face Detection</title>
<style>
h2
{
padding-bottom:20px;
font-weight600;
font-size3.2em
}
</style>

  <body>
    <div class="container"><center><h2>Face Detection</h2></center>
      <div class="col-lg-offset-2 col-lg-8">
        <center><form  class="form-inline" action = "/stop" method = "post" enctype="multipart/form-data">          
          <input type = "submit" class="btn btn-danger btn-md btn-block" value="Stop">
             </form></center>
                <center><form  class="form-inline" action = "/start" method = "post" enctype="multipart/form-data">          
          <input type = "submit" class="btn btn-success btn-md btn-block" value="Start">
             </form></center><br></div>
                    <div class="col-lg-offset-2 col-lg-8">
         <img src="{{ url_for('video_capture') }}" width="100%">
        </div></div>
    </body>
</html>

stop.html

<!DOCTYPE html>
<html>
 <link rel="stylesheet" href="https://maxcdn./bootstrap/3.4.1/css/bootstrap.min.css">
 <title>Dharmaraj - Face Detection</title>
<style>
h2
{
padding-bottom:20px;
font-weight600;
font-size3.2em
}
</style>

  <body>
    <div class="container">
    <center><h2>Face Detection</h2></center>
            <div class="col-lg-offset-2 col-lg-8">
                  <center><form  class="form-inline" action = "/stop" method = "post" enctype="multipart/form-data">          
          <input type = "submit" class="btn btn-danger btn-md btn-block" value="Stop">
                       </form></center>
                <center><form  class="form-inline" action = "/start" method = "post" enctype="multipart/form-data">          
          <input type = "submit" class="btn btn-success btn-md btn-block" value="Start">
             </form></center><br>                
            </div></div>
    </body>
</html>

app.py

from flask import Flask, render_template, Response
import cv2
app=Flask(__name__)
def capture_by_frames(): 
    global camera
    camera = cv2.VideoCapture(0)
    while True:
        success, frame = camera.read()  # read the camera frame
        detector=cv2.CascadeClassifier('Haarcascades/haarcascade_frontalface_default.xml')
        faces=detector.detectMultiScale(frame,1.2,6)
         #Draw the rectangle around each face
        for (x, y, w, h) in faces:
            cv2.rectangle(frame, (x, y), (x+w, y+h), (02550), 3)
ret, buffer = cv2.imencode('.jpg', frame)
        frame = buffer.tobytes()
        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
@app.route('/')
def index():
    return render_template('index.html')
@app.route('/start',methods=['POST'])
def start():
    return render_template('index.html')
@app.route('/stop',methods=['POST'])
def stop():
    if camera.isOpened():
        camera.release()
    return render_template('stop.html')
@app.route('/video_capture')
def video_capture():
    return Response(capture_by_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__=='__main__':
    app.run(debug=True,use_reloader=False, port=8000)

结果

运行此代码后,你将看到以下屏幕。

图片


☆ END ☆

不喜欢

确定

  • 不看此公众号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约