利用opencv,及自带的人脸识别训练结果(安装包site_package下cv2包内data下的haarcascade_frontalface_default.xml)
这里的opencv可以使用: pip install opencv-python 安装!MAC可能需要brew安装再关联包。
我们需要准备:
- 待识别的图片
- 准备haarcascade_frontalface_default.xml文件
我们计划识别lenna的图片:
import cv2
if __name__ == "__main__":
# 文件地址
file = r'./files/lenna.jpeg'
# 人脸识别训练结果文件
cascade = r'./files/haarcascade_frontalface_default.xml'
# 读取彩色图片,用以识别后的结果绘图
img = cv2.imread(file)
# 将文件转化为灰度模式
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 创建集联分类器
face_cascade = cv2.CascadeClassifier(cascade)
# 开始扫描人脸, 参数可调,描述后附
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.05, minNeighbors=5)
# 扫描的结果,为左上角坐标及宽,高
for x, y, w, h in faces:
# 将结果在彩色图片上用绿色的矩形绘制出来
img = cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 3)
# 显示最终结果
cv2.namedWindow("lenna")
cv2.imshow("lenna", img)
# 等待相应任意按键,结束程序
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如下:
- 参数解读:
参数名 | 解释 |
---|---|
scaleFactor | 默认值为1.1。scale_factor参数可以决定两个不同大小的窗口扫描之间有多大的跳跃,这个参数设置的大,则意味着计算会变快,但如果窗口错过了某个大小的人脸,则可能丢失物体。 |
minNeighbors | 默认值3。表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸) |
如果对您有帮助,欢迎点赞评论!