import cv2
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
img=cv2.imread("D:\java_ceshi\python_sucai\wlwz.jpg",1)
# 用彩色方式读取图片
face_eneine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')
# 加载默认的人脸分类器,这个分类器是opencv自带的,可以直接使用
print(cv2.data.haarcascades)
# 输出一下模型的路径
faces = face_eneine.detectMultiScale(img,scaleFactor=1.3,minNeighbors=5,maxSize=(350,350),minSize=(200,200))
# scaleFactor 为了检测到不同大小的目标,通过scalefactor参数把图像长宽同时按照一定比例(默认1.1)逐步缩小,
# 然后检测,这个参数设置的越大,计算速度越快,但可能会错过了某个大小的人脸。
# minNeighbors 构成检测目标的相邻矩形的最小个数,默认值是3,这个值设置的越大,检测结果越精准,但是漏检的概率也会增大
# maxSize=()会规定检测的长方形的最大值,比如设置为(50,50)那么其他大于这个大小的人脸就不会被检测出来了,这个参数可以根据检测的结果慢慢调试
#minSize=()这个参数可以规定长方形的最小值,类似manSize()
#检测后会返回一组或者多组值,分别代表矩形的左上角坐标,和矩形的宽和长
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
#循环取出每一组值,把这些值画在图片上,img是图片,(x,y)是矩形的左上角坐标,(x+w,y+h)是右下角坐标,(255,0,0)
#因为是BGR颜色,所以框的颜色是蓝色,2代表框线的粗细
cv2.imshow('img',img)
#显示图片
cv2.waitKey(0)
#任意键退出图片
cv2.destroyAllWindows()
#释放内存
opencv人脸检测
最新推荐文章于 2024-01-11 13:52:49 发布