当前位置: 首页 > 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。

http://www.lryc.cn/news/96119.html

相关文章:

  • JVM分享
  • Apache Dubbo CVE-2021-36162 挖掘过程
  • 开源框架面试题目整理
  • Mr. Cappuccino的第52杯咖啡——Mybatis环境搭建与使用
  • 了解Unity编辑器之组件篇Tilemap(五)
  • Linux字符设备操作函数
  • 吉林大学计算机软件考研经验贴
  • 2023-07-26力扣每日一题-区间翻转线段树
  • Java设计模式之 -- 桥接模式
  • 【node.js】02-path模块
  • 攻防世界-Reverse-re1
  • AES加密的基本常识和封装类
  • elasticsearch使用记录
  • UNI-APP_横屏切换竖屏出现样式混乱问题
  • 数据可视化(3)
  • AI面试官:MD5、DES、RSA、AES加密
  • Shell脚本学习-$$特殊变量
  • vscode中python插件过新导致无法正常debug问题解决安装vscode以前版本python插件教程
  • chrome macos编译
  • Linux环境下Elasticsearch相关软件安装
  • 【趟坑记录】d3.zoom()的正确使用姿势 @d3.v7
  • 基于 Docker + Nginx + Gitlab-runner 实现前端自动化部署流程
  • make/makefile的使用
  • Flutter中Navigator 跳转传参数和反向传参数
  • kettle开发-Day40-AI分流之case/switch
  • MySQL下载与安装
  • c++基础2
  • 虚拟机VMware,linux,centos,如何将项目部署到服务器上面
  • R语言 BPNN 反向传播神经网络
  • 回归预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测