一、OpenCV人脸识别
OpenCV是什么?
OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库,可免费适用于科学研究、商业应用。它在人机互动、物体互动、图像分割、人脸识别、动作识别、运动追踪等应用领域具有极大的应用价值。
OpenCV的安装
直接运行cmd后,输入pip install opencv-python,即可完成安装。
利用OpenCV识别人脸
import cv2 import os import matplotlib.pyplot as plt os.chdir('e:') os.getcwd() #更改操作系统的目录 def detect(filename): face_cascade = cv2.CascadeClassifier('C:/Users/JEmahaha/anaconda3/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml') #导入识别部位所需的分类器文件 img = cv2.imread(filename)#读取输入的图片文件 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#以灰度模式加载图片 faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x, y, w, h) in faces:#根据识别到的人脸坐标(两点+宽+高)画矩形框 img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) plt.imshow(img) plt.axis('off') #去掉坐标轴 plt.show() detect('J.jpeg')
输出结果:
步骤:
1.加载分类器,当然分类器事先要放在工程目录中去。分类器本来的位置是在*\opencv\sources\data\haarcascades(根据想识别的部位选择分类器文件)
2.调用detectMultiScale()函数检测,调整函数的参数可以使检测结果更加精确。
3.把检测到的人脸等用矩形画出来。(可自定义形状、线颜色、线宽度)
补充知识点:
1.cv2.imread(filename,[flags])
用于读取图片文件。第一个参数filename填入待分析图片的路径,路径不能含有中文。第二个参数是图像的通道和色彩信息(默认值为1)。
cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可以直接写1。
cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可以直接写0。
cv2.IMREAD_UNCHANGED:包括alpha,可以直接写-1
cv2.imread()读取图片后已多维数组的形式保存图片信息,前两维表示图片的像素坐标,最后一维表示图片的通道索引,具体图像的通道数由图片的格式来决定
不知道用法的可以通过输入代码print(inspect.getdoc(cv2.imread))
查询
2.detectMultiScale()函数检测
OpenCV实践之路——人脸检测(C++/Python)_星沉阁-CSDN博客_c++ opencv人脸检测
3.cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) → None
<