0%

python-opencv

注意:
opencv选择了默认路径下的可以使用以下方法解决

  1. 编写人脸识别的demo,从Github上面下载了haarcascade_frontalface_alt.xml放在了我的桌面,编译一直出问题,后来才发现在安装cv2这个模块的时候,会在你python安装路径下面生成”E:\Python37\Lib\site-packages\cv2\data“,在这个路径下面就有haarcascade_frontalface_alt.xml
    只需要将:

face_cascade = cv2.CascadeClassifier(‘./haarcascades/haarcascade_frontalface_default.xml’)

改为:

face_cascade = cv2.CascadeClassifier(‘D:/Anaconda3/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml’)


  1. 若出现错误

可以在此电脑处搜索文件名,因为可能会出现文件多处出现的情况。

参考:https://blog.csdn.net/qq_42621977/article/details/89315619

照片中的人脸识别

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import cv2
import numpy as np

#1.静态图像中的人脸检测
def StaticDetect(filename):
#创建一个级联分类器 加载一个 .xml 分类器文件. 它既可以是Haar特征也可以是LBP特征的分类器.
face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')

#加载图像
img = cv2.imread(filename)
#转换为灰度图
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#进行人脸检测,传入scaleFactor,minNegihbors,分别表示人脸检测过程中每次迭代时图像的压缩率以及
#每个人脸矩形保留近似数目的最小值
#返回人脸矩形数组
faces = face_cascade.detectMultiScale(gray_img,1.3,5)
for (x,y,w,h) in faces:
#在原图像上绘制矩形
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.namedWindow('Face Detected')
cv2.imshow('Face Detected',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

if __name__=='__main__':
filename = 'test.jpg'
StaticDetect(filename)

结果: