opencv python考勤_Python opencv实现人眼/人脸识别以及实时打码处理

2023-05-16

利用Python+opencv实现从摄像头捕获图像,识别其中的人眼/人脸,并打上马赛克。

系统环境:Windows 7 + Python 3.6.3 + opencv 3.4.2

一、系统、资源准备

要想达成该目标,需要满足一下几个条件:

找一台带有摄像头的电脑,一般笔记本即可;

需配有Python3,并安装NumPy包、opencv;

需要有已经训练好的分类器,用于识别视频中的人脸、人眼等,如无分类器,可以点击这里下载:haarcascades分类器

二、动手做

1、导入相关包、设置视频格式、调用摄像头、指定分类器

import numpy as np

import cv2

fourcc = cv2.VideoWriter_fourcc("D", "I", "B", " ")

out = cv2.VideoWriter('frame_mosic.MP4',fourcc, 20.0, (640,480))

cv2.namedWindow("CaptureFace")

#调用摄像头

cap=cv2.VideoCapture(0)

#人眼识别器分类器

classfier=cv2.CascadeClassifier("../haarcascades/haarcascade_eye_tree_eyeglasses.xml")

2、逐帧调用图像,并实时处理

从摄像头读取一帧图像后,先转化为灰度图像,然后利用指定的分类器识别出我们需要的内容,接着对该部分内容利用高斯噪声进行覆盖,以达成马赛克的目的。

代码如下:

while cap.isOpened():

read,frame=cap.read()

if not read:

break

#灰度转换

grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

#人脸检测

Rects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32))

if len(Rects) > 0:

for Rect in Rects:

x, y, w, h = Rect

# 打码:使用高斯噪声替换识别出来的人眼所对应的像素值

frame[y+10:y+h-10,x:x+w,0]=np.random.normal(size=(h-20,w))

frame[y+10:y+h-10,x:x+w,1]=np.random.normal(size=(h-20,w))

frame[y+10:y+h-10,x:x+w,2]=np.random.normal(size=(h-20,w))

cv2.imshow("CaptureFace",frame)

if cv2.waitKey(5)&0xFF==ord('q'):

break

# 保存视频

out.write(frame)

#释放相关资源

cap.release()

out.release()

cv2.destroyAllWindows()

3、观察效果

代码调用摄像头并在窗口进行了显示,可以实时观察到图像处理的效果,如图:

2019429155609050.jpg?2019329155618

并将结果保存为视频,方便随时查看:

2019429155629307.jpg?2019329155637

完整代码如下:

# -*- coding: utf-8 -*-

import numpy as np

import cv2

fourcc = cv2.VideoWriter_fourcc("D", "I", "B", " ")

out = cv2.VideoWriter('frame_mosic.MP4',fourcc, 20.0, (640,480))

cv2.namedWindow("CaptureFace")

#调用摄像头

cap=cv2.VideoCapture(0)

#人眼识别器分类器

classfier=cv2.CascadeClassifier("../haarcascades/haarcascade_eye_tree_eyeglasses.xml")

while cap.isOpened():

read,frame=cap.read()

if not read:

break

#灰度转换

grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

#人脸检测

Rects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32))

if len(Rects) > 0:

for Rect in Rects:

x, y, w, h = Rect

# 打码:使用高斯噪声替换识别出来的人眼所对应的像素值

frame[y+10:y+h-10,x:x+w,0]=np.random.normal(size=(h-20,w))

frame[y+10:y+h-10,x:x+w,1]=np.random.normal(size=(h-20,w))

frame[y+10:y+h-10,x:x+w,2]=np.random.normal(size=(h-20,w))

cv2.imshow("CaptureFace",frame)

if cv2.waitKey(5)&0xFF==ord('q'):

break

# 保存视频

out.write(frame)

#释放相关资源

cap.release()

out.release()

cv2.destroyAllWindows()

利用opencv提供Python接口,可以很方便的进行图像、视频处理方面的学习研究,实在是很方便。这里把近期所学做个简单应用,后续再学习更深入的知识。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Python opencv实现人眼/人脸识别以及实时打码处理

本文地址: http://www.cppcns.com/jiaoben/python/258035.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv python考勤_Python opencv实现人眼/人脸识别以及实时打码处理 的相关文章

随机推荐

  • mac安装anaconda_Anaconda3安装后 无法在终端使用 conda命令的解决方法

    好久不用Anaconda3 xff0c 突然没办法在终端中使用conda命令 xff0c 报错是 command not found 尝试搜索了一些解决方法 xff0c 有的虽然奏效但是退出Terminal再打开后命令再次失效 最终使用以下
  • python获取windows进程cpu占用率_用Python计算进程cpu使用率

    经过进一步的研究 xff0c 我找到了解决办法 在 因此 xff0c 为了获得进程cpu使用率的百分比 xff0c 我们需要一些参数 xff1a 1 系统时间 为了计算这个 xff0c 我们需要用户模式时间 xff0c 内核模式时间和 空闲
  • Proxmox生产实践点滴:硬件篇

    总体上来说 xff0c Proxmox VE并不挑剔硬件 xff0c 其目前使用的Linux内核来自ubuntu 16 04 LTS发行版 xff0c 内核版本号为4 4 x 应该算是相当新的了 xff0c 确保对新硬件的兼容性 xff0c
  • Python基础——面向对象

    面向过程适合思考小规模事情 面向对象适合思考大规模的事情 思维 xff1a 先判断事情是简单的 小规模的 xff0c 还是复杂 的 xff0c 大规模的 xff0c 然后选择不同的思维方式 遇到复杂问题 xff0c 先从问题中找名词 xff
  • fdisk找不到u盘_U盘装电脑系统两个常见问题及解决方法

    如今电脑装机 xff0c 不管是电脑店还是用户自己装机 xff0c 估计95 以上是选用U盘一键装机 xff0c 网上流行的老毛桃 大白菜 小白等等很多 xff0c 这些系统大同小异 xff0c 运行装机系统 xff0c 然后根据自己需要
  • c++ gdi修改dpi_SV DPI-C接口学习心得

    1 是什么 xff1f xff1f DPI Direct Programming Interface xff0c 全称直接编程接口 xff0c 是SV与其它语言 C C 43 43 交互的接口 xff0c 基本上是唯一接口了 2 为什么 x
  • linux系统盘快照回滚,使用Btrfs对Linux系统进行快照回滚方法

    Btrfs 又被称为 Butter FS Better FS 或 B Tree FS 是由 Oracle 于 2007 年开始设计 开发的一个现代文件系统 它于 2009 年开始便被合并入 Linux 2 6 29 内核 Btrfs 基于
  • vi删除选中内容_linuxvi怎么编辑器删除多行与复制命令

    vi vim是什么 Linux世界几乎所有的配置文件都是以纯文本形式存在的 xff0c 而在所有的Linux发行版系统上都有vi编辑器 xff0c 因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了 xff0c 非常方便 vi就是一
  • ios sdk 穿山甲_GitHub - ArthurKnight/flutter_ad_pangolin_plugin: iOS flutter 穿山甲插件

    Pangolin 前言 在使用本插件前请认真 xff0c 仔细阅读穿山甲官方文档 本插件将尽量保留SDK内容和各API相关内容 xff0c 如出现在官方文档以外报错信息可以留言issue 或通过文末联系方式联系作者 注明来意 针对你可能会遇
  • @Async 使用

    64 Async 用于异步式执行场景 作用于类和方法上 方法上使用较为常用 在Application类上加上 64 EnableAsync启动异步注解 然后在需要异步的方法或类上加上 64 Async就可以异步执行了 64 Async 使用
  • 七大设计原则

    1 开闭原则 xff08 Open Closed Principle xff0c OCP xff09 尽量通过扩展来面对需求的更改或者系统的变化 xff0c 尽量不要对原有内容修改 xff08 对新增开 xff0c 对修改闭 xff09 优
  • java 多线程的6种状态

    关于线程的生命周期 xff0c 网上书上说法不一 xff0c 难以统一 xff0c 本篇做一个总结 xff1a java lang Thread State 枚举类中定义了六种线程的状态 xff0c 可以调用线程Thread中的getSta
  • @Configuration 注解

    类名上加如入 64 Configuration 注解使得该类成为Spring的配置类 xff0c Spring在初始化时会扫描并加载该类 xff0c 通常搭配 64 Bean注解使用
  • Proxmox监视器

    Proxmox使用KVM虚拟机技术 在KVM虚拟机里 xff0c 所有部件都不是真实的物理部件 xff0c 而是用软件模拟出来的 CPU 内存 硬盘 网卡等等 xff0c 全部都经过了Qemu软件包装 用户一方面可以利用Qemu软件提供的监
  • @Bean注解

    64 Bean注解加在方法上使得对象交给Spring容器管理 xff0c 返回对类型为交给Spring容器管理的类名 xff0c 方法名为IoC的id xff0c 也可以指定id span class token comment 指定该cl
  • MarkDown基本语法

    标题 xff1a 一级标题为 xff0c 二级标题为 xff0c 以此类推 xff0c 最多6级标题 注意 后面有个空格 字体 xff1a 加粗 加粗字体 实际效果 xff1a 加粗字体 斜体 斜体 实际效果 xff1a 斜体 斜体加粗 斜
  • 没有dpkg命令_ffsend:在命令行中通过 FireFox Send 分享文件 | Linux 中国

    在过去我们已经写了多篇有关安全分享这个话题的文章 xff0c 今天我们甚至还将继续讨论这个话题 xff0c 我们将介绍名为 ffsend 的工具 Vinoth Kumar Linux 用户偏爱使用 scp 或 rsync 来进行文件或目录的
  • python下载视频you_python 视频下载神器(you-get)

    you get是github上python的一个开源库 https github com soimort you get xff0c 使用you get你只需要取得视频所在网页链接地址就可以很轻松的下载下来 xff0c 目前you get所
  • 如何正确运用计算机,如何正确使用电脑

    现在的电脑已经成为生活中不可或缺的一部分了 xff0c 那么如何正确使用电脑比较好呢 怎么样做才能使我们的电脑用久之后还能完美如新呢 以下是CN人才小编为您收集整理提供到的如何正确使用电脑 xff0c 欢迎阅读参考 xff0c 希望对你有所
  • opencv python考勤_Python opencv实现人眼/人脸识别以及实时打码处理

    利用Python 43 opencv实现从摄像头捕获图像 xff0c 识别其中的人眼 人脸 xff0c 并打上马赛克 系统环境 xff1a Windows 7 43 Python 3 6 3 43 opencv 3 4 2 一 系统 资源准