图像运算——脸部解码

面部解码

案例© Fu Xianjun. All Rights Reserved.
这次介绍的是使用掩模和按位运算方式实现的对脸部解码。

上次已经将面部打码了,所以这次我们在上次得到的打码图的基础上进行解码。

脸部打码、解码代码:

import cv2
import numpy as np
lena=cv2.imread("lena.bmp",0)

r,c=lena.shape
mask=np.zeros((r,c),dtype=np.uint8)
mask[220:400,250:350]=1
key=np.random.randint(0,256,size=[r,c],dtype=np.uint8)

lenaXorKey=cv2.bitwise_xor(lena,key)  
encryptFace=cv2.bitwise_and(lenaXorKey,mask*255) 
noFace1=cv2.bitwise_and(lena,(1-mask)*255)   
maskFace=encryptFace+noFace1  

extractOriginal=cv2.bitwise_xor(maskFace,key)   
extractFace=cv2.bitwise_and(extractOriginal,mask*255)  
noFace2=cv2.bitwise_and(maskFace,(1-mask)*255)  
extractLena=noFace2+extractFace

cv2.imshow("maskFace",maskFace)#输出打码图
cv2.imshow("extractLena",extractLena)#输出解码图

cv2.waitKey()
cv2.destroyAllWindows()

获取脸部的原始信息:
将脸部打码的原图与密钥key进行异或运算,得到脸部的原始信息。

extractOriginal=cv2.bitwise_xor(maskFace,key)

得到的效果图:
在这里插入图片描述

提取出打码部分的面部信息:
将解码的面部信息提取出来,得到extractFace。

extractFace=cv2.bitwise_and(extractOriginal,mask*255) 

得到的效果图:
在这里插入图片描述

提取没有打码部分的图像信息:
从脸部打码的图像中提取出没有面部信息的图像,得到noFace2。

noFace2=cv2.bitwise_and(maskFace,(1-mask)*255)  

得到的效果图:
在这里插入图片描述

得到解码的原图:

extractLena=noFace2+extractFace

得到的效果图:
在这里插入图片描述
好了,这就是脸部的解码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值