OpenCV人脸识别
general
前不久从知乎上爬了一些用户数据,想过滤掉非真实用户头像,于是就想到了opencv
Installation
配置opencv环境是一门玄学,跌跌撞撞遇到很多坑。最后还好找到了一个正确的方法。下面说下mac配置好opencv3的最好方法:
- 安装Homebrew,这个不用说,现在基本mac都会装
- 用brew安装opencv3: 如果直接
1
2brew tap homebrew/science
brew install opencv3 --with-contribbrew install opencv
的话,安装的是opencv2,在使用findContours函数的时候会报错Assertion failed,所以还是安装opencv3吧,还有国内速度比较慢,翻墙了也慢,所以还是耐心等待下吧。 - 源码CUDA安装opencv3:
这个麻烦一点,不细表,见传送门:http://www.pyimagesearch.com/2015/06/15/install-opencv-3-0-and-python-2-7-on-osx/ - 测试是否安装好:
1
2python -c "import cv2; print cv2.__version__"
#显示3.1.0就是装好了,显示其他报错的话,pip安装相关包就可以了OpenCV face detection witch python
代码解释:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import cv2
import numpy
face_cascade = cv2.CascadeClassifier("/usr/local/opt/opencv3/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml")
image = cv2.imread("zhihu_img/8b3d3864dcfc857e522e1dc00f7e7804.jpg")
dst = cv2.resize(image, (255, 255), interpolation = cv2.INTER_CUBIC)
gray = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.2, 5)
for (x, y, w, h) in faces:
cv2.rectangle(dst, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('YCM', dst)
cv2.waitKey(0)
cv2.destroyAllWindows() cv2.CascadeClassifier('xxxxx.xml')
haarcascade_frontalface_default.xml 是用于脸部识别的特征文件cv2.resize(image, (255, 255), interpolation = cv2.INTER_CUBIC)
把图片像素限制到255*255detectMultiScale(image,scaleFactor,minNeighbors,flags,minSize,maxSize)
这个方法最终返回值为识别出的矩阵框[x, y, w, h],(x,y)左上角起始坐标,w宽,h高。scaleFactor:前后两次相继的扫描中,搜索窗口的比例系数.例如1.1指将搜索窗口依次扩大10%。图片小的时候,比例系数尽量小能提高准确率。minNeighbors:构成检测目标的相邻矩形的最小个数。一般使用2or3,为0时返回所有的被检候选矩形框。cv2.rectangle
在图片上画出矩形框