当前位置: 首页 > news >正文

opencv-17 脸部打码及解码

使用掩模和按位运算方式实现的对脸部打码、解码实例

代码如下:

import cv2
import numpy as np
#读取原始载体图像
lena=cv2.imread("lena.png",0)
#读取原始载体图像的 shape 值
r,c=lena.shape
mask=np.zeros((r,c),dtype=np.uint8)
mask[220:400,250:350]=1
#获取一个 key,打码、解码所使用的密钥
key=np.random.randint(0,256,size=[r,c],dtype=np.uint8)
#============获取打码脸============
#使用密钥 key 对原始图像 lena 加密
lenaXorKey=cv2.bitwise_xor(lena,key)
#获取加密图像的脸部信息 encryptFace
encryptFace=cv2.bitwise_and(lenaXorKey,mask*255)
#将图像 lena 内的脸部值设置为 0,得到 noFace1
noFace1=cv2.bitwise_and(lena,(1-mask)*255)
#得到打码的 lena 图像
maskFace=encryptFace+noFace1
#============将打码脸解码============
#将脸部打码的 lena 与密钥 key 进行异或运算,得到脸部的原始信息
extractOriginal=cv2.bitwise_xor(maskFace,key)
#将解码的脸部信息 extractOriginal 提取出来,得到 extractFace
extractFace=cv2.bitwise_and(extractOriginal,mask*255)
#从脸部打码的 lena 内提取没有脸部信息的 lena 图像,得到 noFace2
noFace2=cv2.bitwise_and(maskFace,(1-mask)*255)
#得到解码的 lena 图像
extractLena=noFace2+extractFace
#============显示图像============
cv2.imshow("lena",lena)
cv2.imshow("mask",mask*255)
cv2.imshow("1-mask",(1-mask)*255)
cv2.imshow("key",key)
cv2.imshow("lenaXorKey",lenaXorKey)
cv2.imshow("encryptFace",encryptFace)
cv2.imshow("noFace1",noFace1)
cv2.imshow("maskFace",maskFace)
cv2.imshow("extractOriginal",extractOriginal)
cv2.imshow("extractFace",extractFace)
cv2.imshow("noFace2",noFace2)
cv2.imshow("extractLena",extractLena)
cv2.waitKey()
cv2.destroyAllWindows()

运行效果:

在这里插入图片描述

运行上述程序,会出现如图 所示的图像,其中:
 图(a)是原始图像 lena,本程序要对其脸部进行打码。
 图(b)是模板图像 mask,其中白色区域的像素值为 1,黑色区域的像素值为 0。为了方便
显示,在使用函数 cv2.imshow()显示该图像时,将其中的值 1 调整为 255。
 图©是模板图像 mask(图(b))的反色图。
 图(d)是密钥图像 key,该图像使用随机数生成。
 图(e)是整体打码图像 lenaXorKey,是将图像 lena(图(a))和密钥图像 key(图(d))进
行异或运算得到的。
 图(f)是从整体打码图像(图(e))内提取的脸部打码图像 encryptFace。
 图(g)是从图像 lena(图(a))内提取的不包含脸部信息的图像 noFace1,在提取过程中,
将模板图像 mask 的反色图(图©)作为模板。
 图(h)是对图像 lena 的脸部进行打码的结果图像 maskFace,该图像是通过对脸部打码图
像 encryptFace(图(f))和不包含脸部信息的图像 noFace1(图(g))进行按位或运算
得到的。
 图(i)是提取的初步原始图像 extractOriginal,该图像是通过对打码脸部图像 maskFace(图
(h))和密钥图像 key(图(d))进行异或运算得到的。
 图(j)是从提取的初步原始图像 extractOriginal(图(i))中提取的脸部图像 extractFace。
 图(k)从脸部打码的结果图像 maskFace(图(h))内提取的不包含脸部信息的图像 noFace2。

相关文章:

opencv-17 脸部打码及解码

使用掩模和按位运算方式实现的对脸部打码、解码实例 代码如下: import cv2 import numpy as np #读取原始载体图像 lenacv2.imread("lena.png",0) #读取原始载体图像的 shape 值 r,clena.shape masknp.zeros((r,c),dtypenp.uint8) mask[220:400,250:350…...

JVM分享

JVM分享 官网:https://docs.oracle.com/javase/specs/jvms/se8/html/index.html Java代码的执行流程 我们编写完之后的java文件如果要运行,java文件会编译成class文件,在jvm中运行时ClassLoader会加载class文件,加载进来之后&a…...

Apache Dubbo CVE-2021-36162 挖掘过程

01 漏洞背景 发现该漏洞的起因是在分析 CVE-2021-30181 的脚本注入补丁的时候,意外发现了几个已被修复的 yaml 反序列化漏洞,还以为是未公开的Nday,查询后发现其实对应的是 CVE-2021-30180 漏洞的修复代码。通过查看补丁可以知道&#xff0c…...

开源框架面试题目整理

目录 SpringIOC SpringAOP Spring的生命周期 Spring Bean作用域 Spring Bean作用域并发安全 Spring循环依赖...

Mr. Cappuccino的第52杯咖啡——Mybatis环境搭建与使用

Mybatis环境搭建与使用 Mybatis介绍Mybatis环境搭建与使用基于XML方式-原生方式开发创建数据库表项目准备项目结构项目代码实体类中添加有参构造方法产生的问题 基于XML方式-mapper代理开发项目准备项目结构项目代码SQL映射文件中namespace未设置为接口全限定名产生的问题 基于…...

了解Unity编辑器之组件篇Tilemap(五)

Tilemap:用于创建和编辑2D网格地图的工具。Tilemap的主要作用是简化2D游戏中地图的创建、编辑和渲染过程。以下是一些Tilemap的主要用途: 2D地图绘制:Tilemap提供了一个可视化的编辑器界面,可以快速绘制2D地图,例如迷…...

Linux字符设备操作函数

Linux字符设备操作函数是指对字符设备进行打开、关闭、读取、写入、控制等基本操作的函数,它们通过字符设备结构体中的 file_operations 结构体来定义。常用的字符设备操作函数包括: 1、open: 当一个进程试图打开设备文件时,调用这个函数。开…...

吉林大学计算机软件考研经验贴

文章目录 简介政治英语数学专业课 简介 本人23考研,一战上岸吉林大学软件工程专硕,政治72分,英一71分,数二144分,专业课967综合146分,总分433分,上图: 如果学弟学妹需要专业课资料…...

2023-07-26力扣每日一题-区间翻转线段树

链接: 2569. 更新数组后处理求和查询 题意: 给两个等长数组nums1和nums2,三个操作: 操作1:将nums1的[l,r]翻转(0变1,1变0) 操作2:将nums2[any]变成nums2[any]nums1[any]*p&…...

Java设计模式之 -- 桥接模式

什么是桥接模式 桥接模式是一种结构型设计模式,也被称为“Handle/Body”。这种设计模式主要用于将抽象部分与它的实现部分分离,使它们可以独立地变化。这种方式有助于减少系统中的耦合性,增加了扩展性。 主要解决什么问题 桥接模式主要解决…...

【node.js】02-path模块

目录 1. path.join() 2. path.basename() 3. path.extname() 1. path.join() 使用 path.join() 方法,可以把多个路径片段拼接为完整的路径字符串,语法格式如下: path.join([...paths]) 例子: const path require(path)co…...

攻防世界-Reverse-re1

题目描述:菜鸡开始学习逆向工程,首先是最简单的题目 下载附件,执行程序,如下界面 1. 思路分析 没啥说的,既然题目都说是一道简单的逆向题,那么直接使用ida逆向即可,看逆向出的结果是否能写入到…...

AES加密的基本常识和封装类

AES加密的基本常识和封装类 AES(Advanced Encryption Standard)是一种对称密钥加密算法,被广泛用于保护敏感数据的安全性。它是一种块加密算法,意味着它将明文数据分成固定大小的块,并使用相同的密钥对每个块进行独立…...

elasticsearch使用记录

参考文章:https://elasticsearch-py.readthedocs.io/en/v8.8.2/ 参考文章:https://cuiqingcai.com/6214.html 参考文章:https://www.cnblogs.com/cupleo/p/13953890.html elasticsearch版本:8.8.2(软件包发行版) python版本&#…...

UNI-APP_横屏切换竖屏出现样式混乱问题

app从竖屏页面1进入竖屏页面2,再进入横屏,再返回,再返回从新回到竖屏页面1,再次进入竖屏页面2,发现竖屏页面2的所有图片字体都被放大了。再返回竖屏1,再进入竖屏2,一切又恢复正常。 解决跳转横…...

数据可视化(3)

1.饼状图 #饼状图 #pie(x,labels,colors,labeldistance,autopct,startangle,radius,center,textprops) #x,每一块饼状图的比例 #labels:每一块饼形图外侧显示的文字说明 #labeldistance:标记的绘制位置,相对于半径的比例&#xf…...

AI面试官:MD5、DES、RSA、AES加密

AI面试官:MD5、DES、RSA、AES加密 文章目录 AI面试官:MD5、DES、RSA、AES加密1. 什么是MD5加密?它在实际应用中有哪些场景?2. DES加密是什么?它在现实中的应用场景有哪些?3. 问题:RSA加密是什么…...

Shell脚本学习-$$特殊变量

$$特殊变量: 获取脚本执行的进程号(PID)。 [rootvm1 scripts]# cat test_pid.sh echo $$ > /tmp/a.pid sleep 300代码说明: 1)获取$$值,也就是当前脚本进程的PID值,重定向到/tmp/a.pid文件…...

vscode中python插件过新导致无法正常debug问题解决安装vscode以前版本python插件教程

您需要从.vsix文件安装它。您可以在此处找到它们。 下载所需.vsix版本的文件。您可能需要单击assets才能看到它们。 然后打开 VSCode,转到extensions-> 单击三个点 ->install from vsix并选择您的文件。 重启以后,就可以正常debug了!...

chrome macos编译

下载工具包 git clone https://chromium.googlesource.com/chromium/tools/depot_tools/gitpwd export PATH"$PATH:/Users/lichengjun/Downloads/chrome_build/depot_tools" mkdir chromium cd chromium 如果想快的话直接: fetch --nohooks --no-history chromium (…...

Pronto性能优化技巧:如何加速大规模项目的代码审查

Pronto性能优化技巧:如何加速大规模项目的代码审查 【免费下载链接】pronto Quick automated code review of your changes 项目地址: https://gitcode.com/gh_mirrors/pr/pronto Pronto是一款高效的自动化代码审查工具,专为快速检查代码变更而设…...

12. C++14新特性-字符串操作与标准用户定义字面量

一、引言C11 引入了用户定义字面量(User-Defined Literals, UDL)的底层机制,允许开发者通过重载 operator "" 为基础类型附加上下文语义。然而,C11 标准库自身并未提供预置的后缀实现。C14 填补了这一标准库层面的空白&…...

Python通达信数据获取完整指南:mootdx让金融数据分析变得简单高效

Python通达信数据获取完整指南:mootdx让金融数据分析变得简单高效 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 还在为获取A股市场数据而烦恼吗?mootdx作为一款纯Python开…...

KK-HF_Patch技术解析:游戏增强补丁的架构设计与实践方法

KK-HF_Patch技术解析:游戏增强补丁的架构设计与实践方法 【免费下载链接】KK-HF_Patch Automatically translate, uncensor and update Koikatu! and Koikatsu Party! 项目地址: https://gitcode.com/gh_mirrors/kk/KK-HF_Patch 核心价值:重新定义…...

Unlock Music技术解析:音乐格式解密与跨平台播放实践指南

Unlock Music技术解析:音乐格式解密与跨平台播放实践指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: ht…...

如何突破网易云音乐下载限制?Netease_url工具的无损音乐解决方案

如何突破网易云音乐下载限制?Netease_url工具的无损音乐解决方案 【免费下载链接】Netease_url 网易云无损解析 项目地址: https://gitcode.com/gh_mirrors/ne/Netease_url 价值定位:为什么无损音乐解析工具成为音乐爱好者的必备工具?…...

从零到图像:手把手教你用树莓派驱动OV4689 MIPI摄像头(附完整C代码)

从零到图像:树莓派驱动OV4689 MIPI摄像头的实战指南 树莓派作为创客和硬件爱好者的首选开发板,其强大的GPIO和丰富的接口使其成为连接各类传感器的理想平台。OV4689作为一款400万像素的高性能MIPI摄像头,凭借其小尺寸、低功耗和高画质特性&am…...

Neeshck-Z-lmage_LYX_v2应用落地:国风插画师本地AI绘画工作流搭建

Neeshck-Z-lmage_LYX_v2应用落地:国风插画师本地AI绘画工作流搭建 想成为一名国风插画师,但苦于绘画技巧需要长期积累?或者,你已经是一位创作者,却常常被灵感枯竭和重复性工作所困扰?今天,我将…...

别再为Cloudflare Turnstile头疼了!用Python+Playwright-stealth保姆级配置,5分钟搞定验证码

5分钟攻克Cloudflare Turnstile:PythonPlaywright-stealth实战指南 当你兴致勃勃地准备抓取某个网站数据时,突然跳出的Cloudflare Turnstile验证页面就像一盆冷水浇下来。这种看似简单的验证机制背后,是Cloudflare精心设计的浏览器指纹识别和…...

Qwen3-TTS-12Hz-1.7B-Base快速部署:基于Jupyter+Gradio的极简开发环境搭建

Qwen3-TTS-12Hz-1.7B-Base快速部署:基于JupyterGradio的极简开发环境搭建 本文介绍如何在JupyterGradio环境中快速部署Qwen3-TTS-12Hz-1.7B-Base语音合成模型,无需复杂配置,10分钟即可实现声音克隆和语音生成功能。 1. 环境准备与快速部署 1…...