Python 官方文档:入门教程 => 点击学习
目录环境配置实验原理程序设计1.上传图片2.人脸识别3.绘制方框4.保存预测结果5.最后运行gradio的lauch完整代码环境配置 gradio 安装 pip install gr
cv2有预训练模型face_cascade,可以对人脸进行检测,检测到人脸,绘制框框标识。
完成检测,调用cv2进行显示。
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 10 17:11:06 2022
@author: liujianjian
"""
import gradio as gr
import time
import cv2
#############这里需要添加绝对路径###################
pathf = './haarcascades/haarcascade_frontalface_alt.xml'
pathe = './haarcascades/haarcascade_eye.xml'
###########################################
上传图片采用gradio,直接上传即可,或者可加入demo图片,供选择。
demo = gr.Interface(
face_rec,
gr.Image(),
"image",
examples=["images/1.jpg", "images/2.jpg", "images/3.jpg", "images/4.jpg"],
)
人脸识别简单,复制配置文件到本地,加载进去即可。
# 转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 创建人脸识别分类器
face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
face_cascade.load('./haarcascades/haarcascade_frontalface_default.xml')
# 创建人眼识别分类器
eye_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_eye.xml')
face_cascade.load('./haarcascades/haarcascade_eye.xml')
# 检测人脸
faces = face_cascade.detectMultiScale(gray,
scaleFactor=1.15,
minNeighbors=3,
flags=cv2.IMREAD_GRAYSCALE,
minSize=(40, 40))
就是绘制方框了,绘制显示即可。
# 在人脸周围绘制方框
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 进行眼部检测
eyes = eye_cascade.detectMultiScale(gray,
scaleFactor=1.1,
minNeighbors=3,
flags=cv2.IMREAD_GRAYSCALE,
minSize=(3, 3))
for (ex, ey, ew, eh) in eyes:
# 绘制眼部方框
img = cv2.rectangle(img, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)
调用cv2.imwrite即可,注意图像转换。
cv2.imwrite(f"result/{time.time_ns()}.jpg", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
if __name__ == "__main__":
demo.launch()
# -*- coding: utf-8 -*-
"""
Created on Sun April 4 17:11:06 2023
@author: liujianjian
"""
import gradio as gr
import time
import cv2
#############这里需要添加绝对路径###################
pathf = './haarcascades/haarcascade_frontalface_alt.xml'
pathe = './haarcascades/haarcascade_eye.xml'
###########################################
# 人脸检测函数
def face_rec(img):
# 转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 创建人脸识别分类器
face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
face_cascade.load('./haarcascades/haarcascade_frontalface_default.xml')
# 创建人眼识别分类器
eye_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_eye.xml')
face_cascade.load('./haarcascades/haarcascade_eye.xml')
# 检测人脸
faces = face_cascade.detectMultiScale(gray,
scaleFactor=1.15,
minNeighbors=3,
flags=cv2.IMREAD_GRAYSCALE,
minSize=(40, 40))
# 在人脸周围绘制方框
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 进行眼部检测
eyes = eye_cascade.detectMultiScale(gray,
scaleFactor=1.1,
minNeighbors=3,
flags=cv2.IMREAD_GRAYSCALE,
minSize=(3, 3))
for (ex, ey, ew, eh) in eyes:
# 绘制眼部方框
img = cv2.rectangle(img, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)
cv2.imwrite(f"result/{time.time_ns()}.jpg", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
return img
demo = gr.Interface(
face_rec,
gr.Image(),
"image",
examples=["images/1.jpg", "images/2.jpg", "images/3.jpg", "images/4.jpg"],
)
if __name__ == "__main__":
demo.launch()
项目地址: https://GitHub.com/livingbody/face_det_cv2
以上就是基于OpenCV和Gradio实现简单的人脸识别详解的详细内容,更多关于OpenCV Gradio人脸识别的资料请关注编程网其它相关文章!
--结束END--
本文标题: 基于OpenCV和Gradio实现简单的人脸识别详解
本文链接: https://lsjlt.com/news/204904.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0