- 简介:基于insightface的人脸检测项目,实现输入图像提取人脸截图,同时返回返回特征信息
- insightface项目地址: https://github.com/deepinsight/insightface
首先,安装insightface的包:pip install insightface
import cv2
import numpy as np
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image
app = FaceAnalysis()
app.prepare(ctx_id=0, det_size=(640, 640))
(下面直接给代码,关键函数的代码,我感觉都很好理解,没什么好解释的,不懂的话评论区问吧
检测人脸Box
import imutils
def face_save(image, box):
"""
直接存储Arcface检测出的人脸box
"""
global unknow_cnt
(x, y, x2, y2) = box
w = int(x2 - x)
h = int(y2 - y)
faceOrig = imutils.resize(image[y : y + h, x : x + w], width=256)
# faceAligned = fa.align(image, gray, rect)
cv2.imwrite(f"face_crop/test.png", faceOrig)
我中间注释的一行是想进行人脸对齐操作后再保存,但是后续项目不需要对齐(因为是检测嘛,又不是要做人脸数据集
人脸特征提取
def get_face_feat(face_path):
img = cv2.imread(face_path)
faces = app.get(img)
feature = ()
for face in faces:
feature = np.array(face.embedding).reshape((1, -1))
feature = preprocessing.normalize(feature)
box = face.bbox.astype(np.int64)
face_save(img, box)
print(feature)
- 写在最后(碎碎念)
好久没有在CSDN上写文章了,由于实验室和C公司有合同不得以提前成为了一名准打工人,在公司跑的项目又不好在公共平台上交流,公司电脑也不能往外传东西orz
就把之前写的一个项目拆吧拆吧写出来,除了人脸的检测后续还有车辆、车牌的检测,代码不会开源(虽然没签什么合同吧,但是也是交付了的)但会附上关键的代码
写完算法,再写写使用mqtt和sanic(http)来传输信息的方法