python 人脸识别(baidu paddlehub)
实现的功能,使用百度paddlehub模块对图片中人脸识别并提取
需要的模块:paddlehub
(吐槽下百度的模块用起来挺烦的, 电脑可能放个几个月或半年再去跑用其模块的程序就会出各种问题)
如果出现paddle调用不到各种模块时可以试试安装paddlepaddle 2.4.0版本,这个版本高了或低了都会报各种奇奇怪怪的错误:
pip uninstall paddlepaddle
pip install paddlepaddle==2.4.0
import cv2,sys
import numpy as np
baseDirPath = sys.path[0]
print(baseDirPath)
import paddlehub as hub
module = hub.Module(name = 'pyramidbox_lite_server')
#如果图片路径中包含中文字符,opencv将无法正确读取到文件,此时需要使用如下两个函数取读/写图片
#读含中文/韩文/日文等特殊字符路径的图片
def cv_imread(in_path):
im = cv2.imdecode(np.fromfile(in_path, dtype=np.uint8),-1)
return im
#路径中有中文名 cv2写
def cv_imwrite(out_path, imp_np):
imp_type = '.' + out_path.split('.')[-1]
cv2.imencode(imp_type, imp_np)[1].tofile(out_path)
pic = baseDirPath + '\\百度大会.jpg'
src = cv_imread(pic)
result = module.face_detection(data = {'data':[src]})
for i in range(len(result[0]['data'])):
if result[0]['data'][i]['confidence'] > 0.9:
left = result[0]['data'][i]['left']
top = result[0]['data'][i]['top']
right = result[0]['data'][i]['right']
bottom = result[0]['data'][i]['bottom']
img = src[top:bottom, left:right]
pic_o = baseDirPath + f'\\百度大会-{i:02d}.png'
cv_imwrite(pic_o, img)
源码:https://download.csdn.net/download/mjc1321/89070492