OpenCV图像掩模,外加加密解密

# -*- coding: utf-8 -*-
"""
Created on Wed Sep 29 08:48:17 2021

@author: Administrator
"""

import numpy as np
import cv2

#图像掩模
image = cv2.imread('C://Users//Administrator//Desktop//20190317151231154.jpg') #读图
cv2.imshow("Oringinal", image) #显示原图
print(image.shape[:2])

site = np.array([[[500,300],[250,300],[250,5],[500,5]]],dtype=np.int32)
im = np.zeros(image.shape[:2],dtype='uint8')

cv2.polylines(im, site, 1, 255)
cv2.fillPoly(im, site, 255)

mask = im
cv2.namedWindow('Mask',cv2.WINDOW_NORMAL)
cv2.imshow("Mask",mask)
masked = cv2.bitwise_and(image,image,mask=mask)
cv2.namedWindow('Mask to Image',cv2.WINDOW_NORMAL)
cv2.imshow("Mask to Image",masked)
cv2.waitKey(0)

#加密解密


#第一张是明文,第二张是密匙,第三张是密文,第四张是解密后的明文
#于是,当我们想与他人发送带有私密信息的图片时,可以事先约定一张密匙,双方可以通过密文通信
#以此保证信息不会被第三方获取,另外,
#由于要保证双方的密文与密匙大小一致,所以一般可以通过手机的拍照保证密文与密匙大小一致
mingwen = cv2.imread("C://Users//Administrator//Desktop//20190317151231154.jpg") #明文
cv2.imshow("mingwen",mingwen)
row , column, dimension = mingwen.shape
miyao = np.random.randint(0,255,(row,column,dimension),dtype= np.uint8)#密匙
print(miyao)
cv2.imshow("miyao",miyao)
miwen = cv2.bitwise_xor(mingwen,miyao) #密文,bitwise_xor按位异或
print(miwen)
cv2.imshow("miwen",miwen)
mingwen_1 = cv2.bitwise_xor(miyao,miwen)#解密明文
cv2.imshow("jiemizhihou_mingwen",mingwen)
cv2.waitKey()
cv2.destroyAllWindows()


#位平面分解
demo = cv2.imread("C://Users//Administrator//Desktop//20190317151231154.jpg", 0)
cv2.imshow("demo", demo)
r, c = demo.shape                          # 图像预处理
x = np.zeros((r, c, 8), dtype=np.uint8)    # 构造提取矩阵
for i in range(8):
    x[:,:,i] = 2**i
#print(x)
 
w = np.zeros((r, c, 8), dtype=np.uint8)
#print(r)
 
for i in range(8):
    w[:,:,i] = cv2.bitwise_and(demo, x[:,:,i]) # 提取位平面
    mask = w[:,:,i]>0                          # 阈值处理
    w[mask] = 255
    cv2.imshow(str(i), w[:,:,i])               # 显示图片
cv2.waitKey()
cv2.destroyAllWindows()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值