python3.7安装opencv并且实现简单人脸识别
1.说明:windows7 64位 + python3.7 + idea2018社区版
2.首先是安装opencv,按照网上的说法都试了下,总结一下方法:
使用pip下载,在cmd中 输入 pip install opencv-python
会自动安装numpy和opencv,如图cv是3.4.3版本,numpy是1.15.4版本,然后我还下载了opencv-contrib-python,这个是扩展包,也用pip就能下载。
然后去看idea,然后可能会发现imread上提示:Cannot find reference ‘imread’ in ‘init.py’ | cv2
这边你点击cv2看他的__init__文件能够看出他其实用的是cv2.cv2模块,所以这个提示没问题,能够运行(强迫症卡在这一步好久),网上看到的说法是python3版本高的问题(不确定)
import cv2
img = cv2.imread(image_path)
真正的代码在这:
3. 人脸识别
这边其实很简单,有现成的*:haar 人脸特征分类器
直接搜一下下载haarcascades
然后核心代码:
img = cv2.imread(image_path)
face_cascade = cv2.CascadeClassifier("E:\py-file\py-pic\cvdata\haarcascades\haarcascade_frontalface_default.xml")
if img.ndim == 3:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 色彩空间的转换
else:
gray = img # 如果img维度为3,说明不是灰度图,先转化为灰度图gray,如果为2,原图就是灰度图
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(20, 20),
flags=cv2.CASCADE_SCALE_IMAGE)
faces就是所有人脸的位置(x,y,x+h,y+w),需要注意的是CascadeClassifier后面的路径需要是haarcascades完整的路径,frontalface_default.xml就是已经训练好的分类器,不过实测时候发现识别率不是很高,可能是图片的问题,人脸要大且清晰且正脸才能识别。当然还有其他分类器可以使用:frontalface_alt和alt2识别率高一些。