Flask Web 框架中的 OpenCV 人脸检测部署-600学习网
600学习网终身会员188,所有资源无秘无压缩-购买会员
介绍
在本文中,我们将介绍使用Flask API部署进行人脸检测。OpenCV是一个用于解决计算机视觉问题的Python库。它用于各种应用,如人脸检测.视频捕获.跟踪运动对象和对象公开。
烧瓶API
Flask是一个广泛使用的微型Web框架,用于在Python中创建API。它是一个简单而强大的Web框架,旨在快速.轻松地启动,并且可以扩展到复杂的应用程序。
什么是Haarcascade
这是一种对象检测算法,用于识别图像或实时视频中的人脸。该算法使用边缘或线检测特征。
现在让我们继续进行项目实施。
项目结构
索引.html
<! DOCTYPE html>
<html>
<link rel=”stylesheet”href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootsstrap.min.css”>
<title>Dharmaraj-人脸检测</title>
<风格>
氢气
{
padding-底部:20px
字体-重量:600
字体大小:3.2em
}
</风格>
<车身>
<div class=”container”><center><h2>面部检测</h2></center>
<div class=”col-lg-offset-2 col-lg-8″>
<center><form class=”form-inline”action=”/stop”method=”post”enctype=”multipart/form-data”>
<输入类型=”提交”class=”btn btn-危险btn-md btn-block”值=”停止”>
</形式></中心>
<center><form class=”form-inline”action=”/start”method=”post”enctype=”multipart/form-data”>
<输入类型=”提交”class=”btn btn-success btn-md btn-block”value=”开始”>
</形式></中心><br></div>
<div class=”col-lg-offset-2 col-lg-8″>
<img src=”{{url_for(‘video_capture’)}}”宽度=”100%”>
</div></div>
</车身>
</html>
停止.html
<! DOCTYPE html>
<html>
<link rel=”stylesheet”href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootsstrap.min.css”>
<title>Dharmaraj-人脸检测</title>
<风格>
氢气
{
padding-底部:20px
字体-重量:600
字体大小:3.2em
}
</风格>
<车身>
<div class=”容器”>
<中心><h2>面部检测</h2></中心>
<div class=”col-lg-offset-2 col-lg-8″>
<center><form class=”form-inline”action=”/stop”method=”post”enctype=”multipart/form-data”>
<输入类型=”提交”class=”btn btn-危险btn-md btn-block”值=”停止”>
</形式></中心>
<center><form class=”form-inline”action=”/start”method=”post”enctype=”multipart/form-data”>
<输入类型=”提交”class=”btn btn-success btn-md btn-block”value=”开始”>
</形式></中心><br>
</div></div>
</车身>
</html>
应用程序py
从烧瓶导入烧瓶,渲染_模板,响应
导入cv2
app=烧瓶(名称__)
按_帧定义捕获_():
全球照相机
摄像机=cv2.VideoCapture(0)
当为True时:
成功,frame=camera.read()#读取相机帧
检测器=cv2.CascadeClassifier(‘Haarcascades/haarcascade_frontalface_default.xml’)
faces=detect.detectMultiScale(帧,1.2,6)
#在每个面周围画矩形
对于面中的(x,y,w,h):
cv2.矩形(框架,(x,y),(x+w,y+h),(0,255,0),3)
ret,buffer=cv2.imencode(‘.jpg’,帧)
帧=buffer.tobytes()
屈服(b’-框架‘
b’内容-类型:图像/jpeg’+帧+b”)
应用程序路由(‘/’)
定义索引():
return render _ template(‘index.html’)
@app.route(‘/start’,方法=〔’POST’〕)
def start():
return render _ template(‘index.html’)
@app.route(‘/stop’,方法=〔’POST’〕)
def stop():
如果camera.isOpened():
camera.release()
return render _ template(‘stop.html’)
@app.route(‘/视频_捕获’)
定义视频捕获():
return Response(捕获__by_frames(),mimetype=’multipart/x-mixed-replace边界=框架‘)
如果__name__=”__main__”:
app.run(调试=True,使用__reloader=False,端口=8000)
后果
运行此代码后,您将看到以下屏幕。
复制此URLhttp://127.0.0.1:8000/and将其粘贴到浏览器中以获得结果。
600学习网 » Flask Web 框架中的 OpenCV 人脸检测部署-600学习网