2021-04-24
2021/4/24 18:28:29
本文主要是介绍2021-04-24,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
**
OpenCV——脸部打码
一、图像脸部打码的原理
在图像处理过程中,我们可能会对图像的某一个特定区域感兴趣,该区域被称为感兴趣区域(Region of Interest,ROI)。在设定感兴趣区域ROI后,就可以对该区域进行整体操作。脸部打码也是运用这一原理,例如,将一个感兴趣区域A赋值给变量B后,可以将该变量B赋值给另外一个区域C,从而达到在区域C内复制区域A的目的。
二、脸部打码及解码
代码如下:
import cv2 import numpy as np lena=cv2.imread("lena.bmp",0) h,w=lena.shape mask=np.zeros((h,w),dtype=np.uint8) mask[220:400,250:350]=1 key=np.random.randint(0,256,size=[h,w],dtype=np.uint8) # 获取密匙 lenaXorKey=cv2.bitwise_xor(lena,key) # 对原图像加密 encryptFace=cv2.bitwise_and(lenaXorKey,mask*255) # 获取加密图的脸部信息 noFace1=cv2.bitwise_and(lena,(1-mask)*255) # 将原图的脸部位置置0 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("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()
总结
脸部打码主要运用了ROI原理,定义出人的面部,在在其定义的地方进行操作。
这篇关于2021-04-24的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现