本文主要是介绍图像运算——脸部解码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
面部解码
案例© 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+extractFacecv2.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
得到的效果图:
好了,这就是脸部的解码。
这篇关于图像运算——脸部解码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!