基于opencv和python3实现人脸检测
基于OpenCV包14行代码实现人脸检测:只是实现人脸检测,并没有实现人脸识别,还得提前进行训练才行。软件:spyder提前导入:pip install openCV-python可以加链接提高数倍下载速度,具体请参考第一篇文章。代码以及详细解释:"""Created on Thu Apr 30 15:25:04 2020@author: dongdong"""import cv2#输入待检测人脸
·
基于OpenCV包14行代码实现人脸检测:只是实现人脸检测,并没有实现人脸识别,还得提前进行训练才行。
软件:spyder
提前导入:pip install openCV-python
可以加链接提高数倍下载速度,具体请参考第一篇文章。
代码以及详细解释:
"""
Created on Thu Apr 30 15:25:04 2020
@author: dongdong
"""
import cv2
#输入待检测人脸
img = cv2.imread("test3.jpg") #需要自己将jpg格式的图片放置到和此代码放到同一根目录下。
#将图像转换为灰度图像,因为opencv人脸检测器需要灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#【3】创建Cascade分类器
#CascadeClassifier的参数为人脸层级检测器模板文件路径
faceCascade=cv2.CascadeClassifier(cv2.data.haarcascades
+ "haarcascade_frontalface_default.xml")#采用基于样本的Haar特征进行的分类器训练.
# 调用detectMultiScale功能检测图像中的人脸
"""
第一个参数gray:为传入灰度图像;
第二个参数scaleFactor:由于通常越靠近相机的人脸会越大,scaleFactor比例因子对人脸大小进行补偿,在处理远近大小差别很大的人脸图像时需要进行具体调整;
第三个参数minNeighbors:该算法使用移动窗口来检测对象,minNeighbors设置在当前对象窗口需要检测多少个窗口
第四个参数minSize:设置每个窗口的大小;
第五个参数flags:返回检测到人脸的坐标矩阵列表。
"""
faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5,
minSize=(30,30), flags=cv2.CASCADE_SCALE_IMAGE)
#将检测到的人脸用矩形标识
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) #x,y这里指的是水平和竖直方向。
"""
# 将图像输出保存到本地
#cv2.imwrite("test_fr.png",image)
"""
#将图片窗口化输出
cv2.namedWindow("picture")#输出图片名称
cv2.imshow("picture", img)
cv2.waitKey(0)#waitKey()函数的功能是不断刷新图像,如果设置waitKey(0),代表按任意键继续,如果使用视频的话,得大于0
cv2.destroyAllWindows()
例如测试图片:
结果展示:
that‘s all,thank you
更多推荐
已为社区贡献1条内容
所有评论(0)