Python&OpenCV自动人脸打马赛克&调色系统[源码&UI操作界面&部署教程]

article/2025/10/7 1:53:44

1.视频演示:

[项目分享]Python&OpenCV自动人脸打马赛克&调色系统[源码&UI操作界面&部署教程]

2.图片演示:

1.png

13.jpg

3.图像颜色检索&替换:

2.png

4.马赛克分类:

使用opencv库中的haarcascade_frontalface_default.xml进行人脸检测。
1、使用高斯噪声进行模糊处理。
2、使用高斯滤波函数,在相应的位置处进行模糊处理。

高斯噪声,得到的马赛克为多重点点。原来的视频命名为output.avi,代码编译后保存的视频命名为1111.avi。记得修改自己的文件路径哦。

import numpy as np
import cv2 as cvcap = cv.VideoCapture('output.avi')
face_cascade = cv.CascadeClassifier("/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml")
#eye_cascade = cv.CascadeClassifier("/usr/share/opencv/haarcascades/haarcascade_eye.xml")#眼睛fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('1111.avi',fourcc, 20.0, (640,480))def facedetection(img):# gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(img, 1.3, 5)for (x, y, w, h) in faces:#方框img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)roi_gray = gray[y:y+h, x:x+w]#圆框#cv.circle(img, (int(x+w/2), int(y+h/2)), 100, (0, 0, 255), 2)return imgwhile True:# 读取当前帧ret, frame = cap.read()# 转为灰度图像gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)Rects = face_cascade.detectMultiScale(gray, 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))im = facedetection(frame)out.write(im)cap.release()
out.release()
cv2.destroyAllWindows()

图片是由一个三维数组,打马赛克就是把特定区域的值替换为其他值,项目在做的过程中经过一次升级,最开始用的是高斯马赛克,后来参考该博客,升级为和其他软件手工打的马赛克一样的样式正规马赛克

高斯马赛克

特定区域值替换为高斯分布数值,可以利用numpy中的np.random.normal(size=(h,w))来生成一些随机的数值,然后进行替换即可

正规马赛克

马赛克的实现原理是把图像上某个像素点一定范围邻域内的所有点用邻域内左上像素点的颜色代替,这样可以模糊细节,但是可以保留大体的轮廓。就是用左上角的那个值,来替换右下方一个小方块的值,逐步进行替换即可。

5.代码实现:

高斯马赛克

import cv2
import numpy as npface_location=[430,500,730,870]  #x1,y1,x2,y2  x1,y1为人脸左上角点;x2,y2为人脸右下角点
img=cv2.imread('./tongliya.jpg')  #opencv读取的是BGR数组##高斯马赛克
def normal_mosaic(img, x1, y1, x2, y2):img[y1:y2, x1:x2, 0] = np.random.normal(size=(y2-y1, x2-x1))img[y1:y2, x1:x2, 1] = np.random.normal(size=(y2-y1, x2-x1))img[y1:y2, x1:x2, 2] = np.random.normal(size=(y2-y1, x2-x1))return imgx1=face_location[0]
y1=face_location[1]
x2=face_location[2]
y2=face_location[3]
img_mosaic=normal_mosaic(img, x1, y1, x2, y2)
cv2.imwrite('img_mosaic_normal.jpg',img_mosaic)

正规马赛克

import cv2
import numpy as npface_location=[430,500,730,870]  #x1,y1,x2,y2  x1,y1为人脸左上角点;x2,y2为人脸右下角点
img=cv2.imread('./tongliya.jpg')  #opencv读取的是BGR数组#正规马赛克
def do_mosaic(img, x, y, w, h, neighbor=9):""":param rgb_img:param int x :  马赛克左顶点:param int y:  马赛克左顶点:param int w:  马赛克宽:param int h:  马赛克高:param int neighbor:  马赛克每一块的宽"""for i in range(0, h , neighbor):  for j in range(0, w , neighbor):rect = [j + x, i + y]color = img[i + y][j + x].tolist()  # 关键点1 tolistleft_up = (rect[0], rect[1])x2=rect[0] + neighbor - 1   # 关键点2 减去一个像素y2=rect[1] + neighbor - 1if x2>x+w:x2=x+wif y2>y+h:y2=y+hright_down = (x2,y2)  cv2.rectangle(img, left_up, right_down, color, -1)   #替换为为一个颜值值return imgx=face_location[0]
y=face_location[1]
w=face_location[2]-face_location[0]
h=face_location[3]-face_location[1]
img_mosaic=do_mosaic(img, x, y, w, h, neighbor=15)
cv2.imwrite('img_mosaic.jpg',img_mosaic)

完整源码&环境部署视频教程&自定义UI界面

参考博客《Python&OpenCV自动人脸打马赛克&调色系统[源码&UI操作界面&部署教程]》

6.参考文献:


  • [1]基于Adaboost的安全带检测系统[J]. 陈雁翔,李赓. 电子测量技术. 2015(04)
  • [2]基于高斯混合模型的运动目标检测方法研究[J]. 马德智,李巴津,董志学. 电子测量技术. 2013(10)
  • [3]基于超球支持向量机的多姿态协同人脸检测[J]. 滕少华,陈海涛,张巍. 计算机应用. 2013(07)
  • [4]基于LBP算子和类覆盖捕获图的人脸检测算法[J]. 赵海峰,孙姗姗,闫伟红,王宜龙,孙登第. 数学的实践与认识. 2013(07)
  • [5]基于类Haar特征与级联AdaBoost算法的防震锤识别[J]. 金立军,闫书佳,刘源. 系统仿真学报. 2012(09)
  • [6]改进的高斯肤色模型及其在人脸检测中的应用[J]. 刘春生,常发亮,陈振学,李爽. 仪器仪表学报. 2012(05)
  • [7]复杂光照下的人脸肤色检测方法[J]. 李全彬,王小明,刘锦高,李明. 计算机应用. 2010(06)
  • [8]复杂背景和光照多变的人脸检测方法[J]. 李全彬,孙巧榆,刘锦高,李明. 计算机工程与应用. 2009(18)

http://chatgpt.dhexx.cn/article/VQnuhne7.shtml

相关文章

Python opencv:人眼/人脸识别并实时打码处理

利用Pythonopencv实现从摄像头捕获图像,识别其中的人眼/人脸,并打上马赛克。 系统环境:Windows 7 Python 3.6.3 opencv 3.4.2 一、系统、资源准备 要想达成该目标,需要满足一下几个条件: 找一台带有摄像头的电脑…

seleniumxpath打码平台

selenium使用 一 bs4搜索文档树二 css选择器三 selenium基本使用四 无界面浏览器五 selenium其它用法5.1 登录百度5.2 获取位置属性大小,文本5.3 元素操作5.4 执行js代码5.5 切换选项卡5.6 浏览器前进后退5.7 异常处理 六 selenium登录cnblogs获取cookie七 抽屉半自…

第十一章 自动编码器

简介:自动编码器是一种可以进行无监督学习的神经网络模型。一般而言,一个完整的自动编码器主要由两部分组成,分别是用于核心特征提取的编码部分和可以实现数据重构的解码部分。 1.自动编码器入门 在自动编码器中负责编码的部分也叫做编码器&a…

Python 题库自动化面试题

1、自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2、什么是断言( Assert) ? 断言 Assert 用于在代码中验证实际结果是不是符合预期结果, 如果测试用例执行失败会抛出异常并提供断言日志 3、什么…

Python实现对视频自动打码

我们在观看视频的时候,有时候会出现一些奇怪的马赛克,影响我们的观影体验,那么这些马赛克是如何精确的加上去的呢? 本次我们就来用Python实现对视频自动打码! 准备工作 环境咱们还是使用 Python3.8 和 pycharm2021 即…

Python——超级鹰打码平台实现selenium对b站的自动化登陆

目录 一 、Chrome(谷歌)驱动器的下载 (一)驱动器版本选择 (二)下载Chrome驱动器 二、需要安装的库 (一)安装命令 (二)指定selenium版本原因 三、实现步…

selenium 自动化测试

Selenium 是一个用于Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试。目前在Web自动化领域应用越来越广泛。 selenium 介绍 Selenium的特点如下: 开源、免费多浏览器支持:Firefox、Chrome、IE、Opera、Edge多平台支…

深度学习中的自动编码器:TensorFlow示例

什么是自动编码器? 自动编码器是重建输入的绝佳工具。简单来说,机器就是一个图像,可以生成一个密切相关的图片。这种神经网络中的输入是未标记的,这意味着网络能够在没有监督的情况下进行学习。更准确地说,输入由网络编码,仅关注最关键的特征。这是自动编码器因降维而流行…

博客论坛自动采集器 - 蓝天采集器源码

介绍: 博客论坛自动采集器 做一个自动采集文章的网站,在你网站根目录创建一个目录随便我这边是caiji,然后把采集器的源码上传到caiji里面去。 安装:你的域名/caiji访问配置好数据库什么的安装就行。数据前缀不要和原来博客的相同。 安装完成…

Pytorch基础-07-自动编码器

自动编码器(AutoEncoder)是一种可以进行无监督学习的神经网络模型。一般而言,一个完整的自动编码器主要由两部分组成,分别是用于核心特征提取的编码部分和可以实现数据重构的解码部分。 1 自动编码器入门 在自动编码器中负责编码…

python手工打码_python云打码

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 为什么需要了解打码平台的使用现在很多网站都会使用验证码来进行反爬,所以为了能够更好的获取…

python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的

前言 嗨喽!大家好呀,这里是魔王呐~ 我们在观看视频的时候,总有一些精准得马赛克挡住我们想看得地方,严重影响我们的观影体验!! 那么这些马赛克是如何精确的加上去的呢? 本次我们就来用Python…

易语言php验证码识别,易语言自动打码验证码服务端带案例

易语言通用验证码识别服务端,用来做接口还是可以的! 将127.0.0.1改成自己的服务器IP,或者域名 php案例: $rel = file_get_contents(http://www.zhuangjiba.com/d/file/help/2018/08/cfdefaddb3f47d78f8c66a7de28720aa.png); $code = _upload($rel); echo 验证码:.$code; f…

自动打码神器是什么

自动打码神器是什么 提到自动打码神器,可能很多网友会想到答题吧自动打码平台、远程答题器等,除了这一些软件之外,还有不少我们都不知道的软件正在等待大家的发掘。今天,小编就给大家先介绍一款专门批量识别验证码的平台——答题吧…

如何用 ISO 镜像制作 U 盘安装盘(通用方法、无需 WinPE)

文章目录 ★扫盲若干【基本概念】★啥是【通用】制作方法?★为啥选择这几款工具?★rufus 的玩法(Windows 平台)★UNetbootin 的玩法(跨平台)★dd 的玩法(跨平台)★优缺点对比★读者…

利用UltraISO刻录光盘启动盘

1 介绍 虽说现在越来越倾向于使用U盘作为启动盘,但本文还是要讲一讲怎样使用UltraISO制作光盘启动盘—作为系统安装的一种方法。我不知道未来光盘会不会消失,但本文确实能起到保护历史文化遗产的作用。但我希望不要消失,就好像大家都在说纸质…

如何在Mac上。ISO映像文件刻录到DVD

ISO是普通的CD或DVD光盘映像格式基于ISO-9660标准。从原始光盘ISO映像文件包含一个精确复制的数据。它包括光盘上的文件系统的信息,如目录结构,文件属性和引导代码,以及保存的数据。如果你想知道如何创建。ISO映像,并在Mac上玩ISO…

如何使用UltraISO将光盘中的内容提取为ISO镜像

转载地址:https://newsupport.lenovo.com.cn/commonProblemsDetail.html?noteid148183 知识点分析:将光盘中的内容转换为ISO镜像以便保存到电脑中的方法。 操作步骤: 1、鼠标右击桌面上的UltraISO快捷方式图标,选择“以管理员身份运行”; …

如何刻录光盘

如何刻录光盘 1 、将光盘放入光驱,选择“用于CD/DVD播放机” ,该模式下,刻录在光盘的文件无法进行编辑和删除 2 、将需要刻录的文件拷贝至光盘内,则会在“准备好写入光盘中的文件”下显示拷贝进去的文件,此时文件还没…

如何刻录光盘文件

常识补充刻录机简介光盘刻录机是一种数据写入设备,利用激光将数据写到空光盘上从而实现数据的储存。其写入过程可以看做普通光驱读取光盘的逆过程。基本原理刻入数据时,利用高功率的激光束反射到盘片,使盘片上发生变化,模拟出二进…