商城网站数据库,淄博网站运营公司,做导购网站有哪些,许昌企业网站建设公司一、文章概述注意#xff1a;本文只是人脸检测#xff0c;人脸识别的实现请参见本人另一篇博客#xff1a;基于OpenCVTensorFlowKeras实现人脸识别本文将要讲述的是Python环境下如何用OpenCV检测人脸#xff0c;本文的主要内容分为#xff1a;1、检测图片中的人脸2、实时检…一、文章概述注意本文只是人脸检测人脸识别的实现请参见本人另一篇博客基于OpenCVTensorFlowKeras实现人脸识别本文将要讲述的是Python环境下如何用OpenCV检测人脸本文的主要内容分为1、检测图片中的人脸2、实时检测视频中出现的人脸3、用运设备的摄像头实时检测人脸二准备工作提前做的准备安装好Python3下载特征数据HAAR和LBP这两种数据都能实现对人脸特征的提取HAAR大多是小数计算所以运算速度较慢LBP大多是整数计算运行速度较快。如图所示本次实例用红框中的文本其他的文本比如第一个haarcascade_eye.xml是眼睛识别的文本我们下次再用。注意点击下载HAAR和LBP的特征数据--------数据集下载三、开始讲述1、图片人脸检测(1)代码和说明import cv2 as cvimport numpy as npdef face_detect_demo():#人脸检测函数gray cv.cvtColor(src, cv.COLOR_BGR2GRAY)#把图片变成灰度图片因为人脸的特征需要在灰度图像中查找#以下分别是HAAR和LBP特征数据任意选择一种即可注意路径中的‘/’和‘\’是有要求的# 通过级联检测器 cv.CascadeClassifier加载特征数据# face_detector cv.CascadeClassifier(D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml)face_detector cv.CascadeClassifier(D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml)#在尺度空间对图片进行人脸检测第一个参数是哪个图片第二个参数是向上或向下的尺度变化是原来尺度的1.02倍第三个参数是在相邻的几个人脸检测矩形框内出现就认定成人脸这里是在相邻的5个人脸检测框内出现如果图片比较模糊的话建议降低一点faces face_detector.detectMultiScale(gray, 1.02, 5)for x, y, w, h in faces:#绘制结果图#rectangle参数说明要绘制的目标图像矩形的第一个顶点矩形对角线上的另一个顶点线条的颜色线条的宽度cv.rectangle(src, (x, y), (xw, yh), (0, 0, 255), 2)cv.imshow(result, src)#输出结果图src cv.imread(D:/pyproject/cv_renlianjiance/cvrenxiangpic/1.jpg)#图片是JPG和png都可以cv.namedWindow(input image, cv.WINDOW_AUTOSIZE)#创建绘图窗口cv.namedWindow(result, cv.WINDOW_AUTOSIZE)cv.imshow(input image, src)face_detect_demo()cv.waitKey(0)cv.destroyAllWindows()#作用是能正常关闭绘图窗口(2)结果展示2、视频中的人脸检测(1)代码和说明import cv2 as cvimport numpy as npdef face_detect_demo(image):gray cv.cvtColor(image, cv.COLOR_BGR2GRAY)# face_detector cv.CascadeClassifier(D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml)face_detector cv.CascadeClassifier(D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml)faces face_detector.detectMultiScale(gray, 1.02, 5)for x, y, w, h in faces:cv.rectangle(image, (x, y), (xw, yh), (0, 0, 255), 2)cv.imshow(result, image)capture cv.VideoCapture(D:/pyproject/cv_renlianjiance/video/1.mp4)cv.namedWindow(result, cv.WINDOW_AUTOSIZE)while (True):#按帧读取视频ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值如果读取帧是正确的则返回True如果文件读取到结尾它的返回值就为False。frame就是每一帧的图像是个三维矩阵。ret, frame capture.read()# cv.flip函数表示图像翻转沿y轴翻转, 0: 沿x轴翻转, 0: x、y轴同时翻转frame cv.flip(frame, 1)face_detect_demo(frame)#waitKey()方法本身表示等待键盘输入参数是1表示延时1ms切换到下一帧图像对于视频而言c cv.waitKey(10)if c 27:#当键盘按下‘ESC’退出程序break#cv.waitKey(0)参数为0如cv2.waitKey(0)只显示当前帧图像相当于视频暂停,cv.waitKey(0)cv.destroyAllWindows()#作用是能正常关闭绘图窗口(2)结果展示3、利用设备上的摄像头进行人脸检测其实和2中的代码一样只是打开摄像头而不是读取视频文件代码和说明import cv2 as cvimport numpy as npdef face_detect_demo(image):gray cv.cvtColor(image, cv.COLOR_BGR2GRAY)# face_detector cv.CascadeClassifier(D:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml)face_detector cv.CascadeClassifier(D:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml)faces face_detector.detectMultiScale(gray, 1.02, 5)for x, y, w, h in faces:cv.rectangle(image, (x, y), (xw, yh), (0, 0, 255), 2)cv.imshow(result, image)capture cv.VideoCapture(0)#其中的0表示电脑中的第一个相机cv.namedWindow(result, cv.WINDOW_AUTOSIZE)while (True):#按帧读取视频ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值如果读取帧是正确的则返回True如果文件读取到结尾它的返回值就为False。frame就是每一帧的图像是个三维矩阵。ret, frame capture.read()# cv.flip函数表示图像翻转沿y轴翻转, 0: 沿x轴翻转, 0: x、y轴同时翻转frame cv.flip(frame, 1)face_detect_demo(frame)#waitKey()方法本身表示等待键盘输入参数是1表示延时1ms切换到下一帧图像对于视频而言c cv.waitKey(10)if c 27:#当键盘按下‘ESC’退出程序break#cv.waitKey(0)参数为0如cv2.waitKey(0)只显示当前帧图像相当于视频暂停,cv.waitKey(0)cv.destroyAllWindows()#作用是能正常关闭绘图窗口此文转载著作权归作者所有如有侵权联系小编删除