Python实现人脸检测(个人、多人、视频)

  • 1、加载图片:
    • 源程序代码如下:
    • 运行结果如下:
  • 2、图片灰度转换:
    • 源程序代码如下:
    • 运行结果如下:
  • 3、修改图片尺寸(在此次人脸检测案例中未用到):
    • 源程序代码如下:
    • 运行结果如下:
  • 4、绘制矩形-圆形(只是简单地在图片上随便画一个):
    • 源程序代码如下:
    • 运行结果如下:
  • 5、图像单个人脸检测:
    • 源程序代码如下:
    • 运行结果如下:
  • 6、图像多个人脸检测:
    • 源程序代码如下:
    • 运行结果如下:
  • 7、视频中的人脸检测:
    • 源程序代码如下:
    • 运行结果如下:

我们先逐步进行学习。我将人脸检测的学习步骤分为如下几个方面。
(1—4是一些小步骤。5—7是具体实现的案例)
关于代码的相关意义我已经在程序中写上了备注(已经尽可能详细了!!)

1、加载图片:

源程序代码如下:

"""__author__="dazhi"2021/3/20-15:00
"""
#导入模块
import cv2 as cv
#读取图片(注意路径不要有中文,否则会报错)
img = cv.imread("C:\\Users\\26301\\Desktop\\2.jpg")
#显示图片(这时的照片会一闪而过)
cv.imshow('read_img',img)
#设置等待键盘输入(保证上边显示的照片可以停留)
#传入0表示无限等待,直到有东西输入(单位是毫秒)
cv.waitKey(3000)
#释放内存(由于底层是c++写的,所以将底层里面的空间进行释放)
cv.destroyAllWindows()

运行结果如下:

2、图片灰度转换:

源程序代码如下:

"""__author__="dazhi"2021/3/20-15:25
"""
#导入模块
import cv2 as cv
#读取图片(注意路径不要有中文,否则会报错)
BGR_img = cv.imread("C:\\Users\\26301\\Desktop\\2.jpg")
#显示图片(这时的照片会一闪而过)
cv.imshow('BGR_img',BGR_img)#图片灰度转换
gray_img = cv.cvtColor(BGR_img,cv.COLOR_BGR2GRAY)
cv.imshow('gray_img',gray_img)#保存图片
cv.imwrite('gray_img.jpg',gray_img)#设置等待键盘输入(保证上边显示的照片可以停留)
#传入0表示无限等待,直到有东西输入(单位是毫秒)
cv.waitKey(0)
#释放内存(由于底层是c++写的,所以将底层里面的空间进行释放)
cv.destroyAllWindows()

运行结果如下:


3、修改图片尺寸(在此次人脸检测案例中未用到):

源程序代码如下:

"""__author__="dazhi"2021/3/20-15:30
"""
# 导入模块
import cv2 as cv# 读取图片(注意路径不要有中文,否则会报错)
img = cv.imread("C:\\Users\\26301\\Desktop\\2.jpg")
# 显示图片(这时的照片会一闪而过)
cv.imshow('img', img)
print("原来图片的形状:",img.shape)
# 修改图片尺寸(宽度,高度)
resize_img = cv.resize(img, dsize=(200, 240))
print("修改后图片的形状:",resize_img.shape)
# 显示图片(这时的照片会一闪而过)
cv.imshow('resize_img', resize_img)
# 设置等待键盘输入(保证上边显示的照片可以停留)
# 传入0表示无限等待,直到有东西输入(单位是毫秒)
#设置只有输入q的时候、退出
while True:#ord('q')表示q对应的ascallif ord('q') == cv.waitKey(0):break# 释放内存(由于底层是c++写的,所以将底层里面的空间进行释放)
cv.destroyAllWindows()

运行结果如下:

4、绘制矩形-圆形(只是简单地在图片上随便画一个):

源程序代码如下:

"""__author__="dazhi"2021/3/20-15:39
"""
# 导入模块
import cv2 as cv# 读取图片(注意路径不要有中文,否则会报错)
img = cv.imread("C:\\Users\\26301\\Desktop\\2.jpg")
# 画矩形(x,y指的是矩形左上角的哪个点)
x, y, w, h = 50, 50, 80, 80
# color变量里参数的顺序是BGR,thickness表示的是宽度
# (x,y,x+w,y+h)左上和右下两个点
cv.rectangle(img, (x, y, x + w, y + h), color=(0, 255, 0), thickness=2)#画圆center元组指的是原点的坐标
x,y,r = 200,200,100
cv.circle(img,center=(x,y),radius=r,color=(0,0,255),thickness=3)# 显示图片(这时的照片会一闪而过)
cv.imshow('img', img)
# 设置等待键盘输入(保证上边显示的照片可以停留)
# 传入0表示无限等待,直到有东西输入(单位是毫秒)
cv.waitKey(0)
# 释放内存(由于底层是c++写的,所以将底层里面的空间进行释放)
cv.destroyAllWindows()

运行结果如下:

5、图像单个人脸检测:

源程序代码如下:

"""__author__="dazhi"2021/3/20-16:30
"""
# 导入库
import cv2 as cvdef face_detect_demo():# 将图片转换为灰度图片gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 加载特征数据face_detector = cv.CascadeClassifier('D:/wen10/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')#进行检测人脸操作faces = face_detector.detectMultiScale(gray)#得到的daces可能是多组x,y,h,wprint("faces 的数值:",faces)for x, y, w, h in faces:cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2)# 显示图片(这时的照片会一闪而过)cv.imshow('result', img)if __name__ == '__main__':# 读取图片(注意路径不要有中文,否则会报错)img = cv.imread("C:\\Users\\26301\\Desktop\\1.jpg")face_detect_demo()# 设置等待键盘输入(保证上边显示的照片可以停留)# 传入0表示无限等待,直到有东西输入(单位是毫秒)cv.waitKey(0)# 释放内存(由于底层是c++写的,所以将底层里面的空间进行释放)cv.destroyAllWindows()

运行结果如下:


6、图像多个人脸检测:

源程序代码如下:

"""__author__="dazhi"2021/3/20-16:49
"""
# 导入库
import cv2 as cvdef face_detect_demo():# 将图片转换为灰度图片gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 加载特征数据face_detector = cv.CascadeClassifier('D:/wen10/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')#进行检测人脸操作(参数也可以不写)faces = face_detector.detectMultiScale(gray,scaleFactor=1.01,minNeighbors=50)#得到的daces可能是多组x,y,h,wprint("faces 的数值:",faces)for x, y, w, h in faces:#画矩形cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2)#画圆cv.circle(img, center=(x + w // 2, y + h // 2),radius=w//2,color=(0,0,255),thickness=1)# 显示图片(这时的照片会一闪而过)cv.imshow('result', img)if __name__ == '__main__':# 读取图片(注意路径不要有中文,否则会报错)img = cv.imread("C:\\Users\\26301\\Desktop\\5.jpg")face_detect_demo()# 设置等待键盘输入(保证上边显示的照片可以停留)# 传入0表示无限等待,直到有东西输入(单位是毫秒)cv.waitKey(0)# 释放内存(由于底层是c++写的,所以将底层里面的空间进行释放)cv.destroyAllWindows()

运行结果如下:

7、视频中的人脸检测:

源程序代码如下:

"""__author__="dazhi"2021/3/20-17:10
"""
#导入依赖
import cv2 as cv
def face_detect_demo(img):#将图片灰度gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#加载特征数据face_detector = cv.CascadeClassifier('D:/wen10/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')#进行检测人脸操作(参数也可以不写)faces = face_detector.detectMultiScale(gray)for x,y,w,h in faces:#画矩形cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)#画圆cv.circle(img,center=(x+w//2,y+h//2),radius=(w//2),color=(0,255,0),thickness=2)# 显示图片(这时的照片会一闪而过)cv.imshow('result',img)
#读取视频
cap=cv.VideoCapture('video.mp4')
#播放进行读取(一帧一帧的走)
while True:#flag表示是否在播放(布尔类型)flag,frame=cap.read()#判断是否在播放if not flag:breakface_detect_demo(frame)#输入q的时候进行关闭if ord('q') == cv.waitKey(10):break
#释放内存
cv.destroyAllWindows()
#释放视频的空间
cap.release()

运行结果如下:

(这个可以实现视频播放过程中识别,但是博主忘记怎么在csdn里放视频了,所以就在视频的播放过程中截了几张图。如下~~~~~)


Python实现人脸检测(个人、多人、视频)相关推荐

  1. python视频人脸检测_OpenCV + python 实现人脸检测(基于照片和视频进行检测)

    OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...

  2. OpenCV + python 实现人脸检测(基于照片和视频进行检测)

    OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...

  3. 人脸检测的测试程序(视频和摄像头)

    人脸检测的测试程序(视频和摄像头),仅供测试使用. #include"stdafx.h" #include "opencv2/core/core.hpp" #i ...

  4. Python爬虫 + 人脸检测 + 颜值检测 = 知乎高颜值图片抓取

    声明:文中所有文字.图片以及相关外链中直接或间接.明示或暗示涉及性别.颜值分数等信息全部由相关人脸检测接口给出.无任何客观性,仅供参考. 1 数据源 知乎话题『美女』下所有问题中回答所出现的图片 2 ...

  5. OpenCV+python:人脸检测

    1,人脸检测简介 人脸检测的模型主要有两类,一类是知识模型,根据眼睛.嘴.鼻子的相对位置或面部不同部位的颜色深度差异来检测人脸,另一类是统计模型,把海量的人脸数据转换成二维像素矩阵,从统计的观点出发构 ...

  6. python dlib人脸检测_Python 3 利用 Dlib 实现人脸检测和剪切

    0. 引言 利用 Python 开发,借助 Dlib 库进行人脸检测 / face detection 和剪切: 将检测到的人脸剪切下来,依次排序平铺显示在新的图像上: 实现的效果如 图1 所示,将 ...

  7. Python 爬虫 + 人脸检测 —— 知乎高颜值图片抓取

    1 数据源 知乎 话题『美女』下所有问题中回答所出现的图片 2 抓取工具 Python 3,并使用第三方库 Requests.lxml.AipFace,代码共 100 + 行 3 必要环境 Mac / ...

  8. python爬取美女_知乎大神用Python爬取高颜值美女(Python爬虫+人脸检测+颜值检测)...

    import time import os import re import requests from lxml import etree from aip import AipFace #百度云 ...

  9. 基于opencv的人脸检测(图片、视频、摄像头)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.检测图片中的人脸 二.检测视频与摄像头中的人脸 总结 前言 人脸检测识别一直是个热门的研究问题,同时也是opencv中 ...

最新文章

  1. C++ mutable
  2. RIPv2 路由手工汇总
  3. android替换电话应用,android – 替换调用应用程序
  4. Web开发人员有用的代码比较工具
  5. js(Dom+Bom)第八天
  6. VC++中忽略所有默认库纯Win32 API编译及链接 - 计算机软件编程 - Wangye's Space
  7. 一文弄懂AOP各种概念
  8. shiro 拦截未登录的ajax_Springboot+thymeleaf+Shiro继承,亲测可用
  9. 查看dll或exe文件的依赖项——使用vs自带的dumpbin工具
  10. 微信商户平台 扣款测试规则
  11. 创建不带参数的存储过程
  12. Java常见面试题(二)
  13. 【POI2005】SZA-Template(KMP)
  14. php安装失败,phpcms安装失败怎么办
  15. iOS 监听耳机插入和拔出[检索]
  16. java放3个按钮_java编写三个按钮
  17. FM调制的FPGA实现
  18. 知识图谱学习笔记之知识图谱中的知识分类
  19. 阿里云RPA操作——当前窗口截图
  20. DSP看门狗实验源程序

热门文章

  1. g711音频封装wav文件头格式
  2. identity的作用
  3. 关于Java NoSuchElementException: No value present以及java.lang.NullPointerException处理
  4. 【java】算法题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级台阶总共有多少种跳法?列举所有跳法
  5. 蛙蛙推荐:微软网络讲座系列教程视频下载
  6. BraTS 2021脑肿瘤分割数据集介绍
  7. 印度尼西亚:新立法认定加密货币为商品
  8. Access denied for user ‘admin‘@‘localhost‘ (using password: YES)
  9. 游戏片子“战火兄弟连”正式公映
  10. 「硬见小百科」全类型电阻介绍