准备工作:找到分类器:
方法:安装opencv软件包,或者把此文件放到根目录
用pip安装的opencv不带分类器,所以要下载完整版的,可去官网下载安装,分类器位置在
opencv\build\etc\haarcascades\haarcascade_frontalface_alt_tree.xml
一、图片中的人脸检测
代码如下(采用的第2个方法)
#导入cv模块
import cv2 as cv
import numpy as np
#图片人脸检测
def face_detect_demo(image):
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
# face_detector=cv.CascadeClassifier("D:/software/opencv/build/etc/haarcascades/haarcascade_frontalface_alt_tree.xml")
face_detector = cv.CascadeClassifier("D:/software/opencv/build/etc/haarcascades/lbpcascade_frontalcatface.xml")
faces=face_detector.detectMultiScale(gray,1.02,15)
for x,y,w,h in faces:
cv.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2)
cv.imshow("face_detect_demo",image)
#视频人脸检测
def vedio_face_detect_demo(image):
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
face_detector=cv.CascadeClassifier("D:/software/opencv/build/etc/haarcascades/haarcascade_frontalface_alt_tree.xml")
faces=face_detector.detectMultiScale(gray,1.02,5)# 第二个参数是移动距离,第三个参数是识别度,越大识别读越高
for x,y,w,h in faces:
cv.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2)#后面两个参数,一个是颜色,一个是边框大小
cv.imshow("video_face_detect_demo",image)
'''
print("------------Python Opencv Tutorial!-------------")
# 读取图像,支持 bmp、jpg、png、tiff 等常用格式
src = cv.imread("F:/Projects/images/topstar.png")
#创建窗口并显示图像
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.namedWindow("result",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src) #显示原图
face_detect_demo(src)
cv.waitKey(0)
#释放窗口
cv.destroyAllWindows()
'''
print("------------Python Opencv Tutorial!-------------")
capture=cv.VideoCapture(0)#打开摄像头
cv.namedWindow("result",cv.WINDOW_AUTOSIZE)
while(True):
ret,frame=capture.read()#读取摄像头
frame=cv.flip(frame,1)
vedio_face_detect_demo(frame)
c=cv.waitKey(10)
if c==27: #ESC
break
cv.waitKey(0)
图片检测效果: