【特效】对实时动态人脸进行马赛克及贴图马赛克处理及一些拓展

简介: 【特效】对实时动态人脸进行马赛克及贴图马赛克处理及一些拓展

前言

  以在数字化时代,视频内容的分享和传播已经成为了生活中不可或缺的一部分。然而,随着社交媒体的普及和信息的广泛传播,我们也面临着隐私泄露的风险。特别是在涉及他人隐私的视频中,保护个人信息变得愈发重要。在本文中我将为大家讲解使用人脸关键点检测进行马赛克处理。

马赛克简介

  马赛克(Mosaic)是一种常见的图像处理技术,它用于对图像或视频中的特定区域进行模糊或像素化处理。马赛克处理通过在敏感区域上覆盖小方块(像素块)或小圆点,使得原始图像中的细节被隐藏或模糊,从而达到保护隐私或隐藏敏感信息的目的。

马赛克处理的原理很简单,它涉及两个主要步骤:

  1. 区域划分:首先,需要确定要进行马赛克处理的敏感区域。这可以通过人工标注或使用计算机视觉技术进行自动检测来实现。在人脸马赛克处理中,通常会使用人脸检测算法来找到人脸的位置。
  2. 模糊处理:一旦确定了敏感区域,就会在这些区域上进行模糊处理。常见的方法是用小方块或小圆点等固定形状的像素块来替代原始图像中的细节。这些像素块的颜色可以是敏感区域周围的平均颜色或其他特定颜色,以便将敏感信息有效地隐藏起来。

  通过上述的介绍我们知道了马赛克的主要目的:保护隐私或隐藏敏感信息 。那么我们使用另一个张图贴到需要保护隐私或隐藏敏感信息的地方同样达到了目的,如下所示。

image.png

马赛克实操

  在上述两类马赛克处理去前提要求是检测到人脸部位,大家可以参考本人博客:博客:一起来学MediaPipe(一)人脸及五官定位检测,在这里我们将这两类马赛克处理称为模糊马赛克与贴图马赛克。 模糊马赛克:

shell

复制代码

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 tolist
            left_up = (rect[0], rect[1])
            x2 = rect[0] + neighbor - 1  # 关键点2 减去一个像素
            y2 = rect[1] + neighbor - 1
            if x2 > x + w:
                x2 = x + w
            if y2 > y + h:
                y2 = y + h
            right_down = (x2, y2)
            cv2.rectangle(img, left_up, right_down, color, -1)  # 替换为为一个颜值值
    return img

贴图马赛克:

shell

复制代码

frame[ymin:ymax, xmin:xmax] = effect

演示

image.png

拓展

  在mediapipe 库中我们仅以简单的人脸检测作为关键但进行马赛克处理,但mediapipe 库还可以检测人体姿态,后续大家可以自行尝试做整个人体关键部位的马赛克处理。深入拓展下可以对一些【禁片:1未满8入内】中的主角的关键部分检测并自动打码

相关文章
制作更好的游戏纹理:'2的幂次'和适当的图片大小
制作更好的游戏纹理:'2的幂次'和适当的图片大小 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
1215 0
|
前端开发 数据可视化
【视觉基础篇】13 # 如何给简单的图案添加纹理和复杂滤镜?
【视觉基础篇】13 # 如何给简单的图案添加纹理和复杂滤镜?
65 0
【视觉基础篇】13 # 如何给简单的图案添加纹理和复杂滤镜?
|
JavaScript 前端开发
分享31个漂亮的矢量背景素材
  我知道设计师总是需要一些好的矢量背景用于打印项目,如今矢量背景也用于网页背景,它们不会因为被拉伸而变形。今天,本文就与大家分享31个矢量背景素材供大家免费下载。 1- 2 Ways Vector Background 点击下载 2- Abstract Background 点击下...
1772 0
|
Python
Python3 使用pli优化图片大小,相机或手机拍图片根据exif旋转、纠正方向
首先安装 pip install pillow 如果报错,请根据报错的信息去搜索一下,一般都能得到解决,未找到请升级pip python -m pip install --upgrade pip 或者 pip install --upgrade pip 那么写个方法 from PIL import.
1041 0
|
C# 定位技术 API
WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现
原文: WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现         去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用。
1623 0
|
数据可视化 定位技术 开发者
地图的路网、边界等线条底图素材的获取方法
本文介绍获取定制地图中路网、水体等线条素材底图的免费方法~
356 1
|
10月前
|
存储 数据可视化 数据管理
处理RGB-D图像数据以构建室内环境地图并估计相机的轨迹
视觉同步定位和映射 (vSLAM) 是指计算摄像机相对于周围环境的位置和方向,同时映射环境的过程。 您可以使用单眼摄像头执行 vSLAM。但是,深度无法准确计算,估计的轨迹未知,并且随着时间的推移而漂移。要生成无法从第一帧开始三角测量的初始地图,必须使用单眼相机的多个视图。更好、更可靠的解决方案是使用 RGB-D 相机,它由一个 RGB 彩色图像和一个深度图像组成。
121 0