数学之路(3)-信息隐藏(2)

来源:互联网 发布:dbc数据库是什么 编辑:程序博客网 时间:2024/05/29 08:16

python将信息加密进图片

从图片中解密信息

>>> runfile(r'K:\testpro\test1.py', wdir=r'K:\testpro')

http://blog.csdn.net/myhaspl
myhaspl@qq.com


loading  ...
正在处理中 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

>>> 

往图片加密信息

>>> runfile(r'K:\testpro\test.py', wdir=r'K:\testpro')
http://blog.csdn.net/myhaspl
myhaspl@qq.com


loading  ...
正在处理中 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
>>> 


加密python代码

#!/usr/bin/env python#-*- coding: utf-8 -*-#code:myhaspl@qq.com#http://blog.csdn.net/myhasplimport cv2import numpy as npfn1="he1.jpg"fn2="he2.jpg"fn3="secret.png"redcolor=(0, 0, 255)if __name__ == '__main__':    print 'http://blog.csdn.net/myhaspl'    print 'myhaspl@qq.com'    print    print 'loading  ...'    print u'正在处理中',    img1 = cv2.imread(fn1)    img2 = cv2.imread(fn2)    w=img1.shape[1]    h=img1.shape[0]         #加上需要隐藏的消息    cv2.putText(img1,"http://blog.csdn.net/myhaspl", (20,20),cv2.FONT_HERSHEY_PLAIN, 1.0, redcolor, thickness = 1)    cv2.putText(img1,"code by myhaspl:myhaspl@qq.com", (20,60),cv2.FONT_HERSHEY_PLAIN, 1.0, redcolor, thickness = 1)     cv2.putText(img1,"Installing Python is generally easy. ", (1,90),cv2.FONT_HERSHEY_PLAIN, 1, redcolor, thickness = 1)             cv2.namedWindow('img1')         cv2.imshow('img1', img1)       cv2.namedWindow('img2-1')         cv2.imshow('img2-1', img2)        #处理隐藏目标图    #将所有蓝色值变成奇数    for j in xrange(0,h):        for i in xrange(0,w):            if (img2[j,i,0]%2)==1:                img2[j,i,0]=img2[j,i,0]-1        print '.',        mirror_w=w/2    #读取源图,并将信息写入目标图    for j in xrange(0,h):        for i in xrange(0,w):            if (img1[j,i,0],img1[j,i,1],img1[j,i,2])==redcolor:                img2[j,i,0]=img2[j,i,0]+1        print '.',    #保存修改后的目标图,并显示    cv2.namedWindow('img2-2')         cv2.imshow('img2-2', img2)             cv2.imwrite(fn3, img2)          cv2.waitKey()    cv2.destroyAllWindows()            

本博客所有内容是原创,未经书面许可,严禁任何形式的转载

http://blog.csdn.net/u010255642


加密过程的效果图


解密的python代码

#!/usr/bin/env python#-*- coding: utf-8 -*-#code:myhaspl@qq.com#http://blog.csdn.net/myhaspl#解码文件import cv2import numpy as npfn="secret.png"if __name__ == '__main__':    print 'http://blog.csdn.net/myhaspl'    print 'myhaspl@qq.com'    print    print 'loading  ...'    print u'正在处理中',    img = cv2.imread(fn)    w=img.shape[1]    h=img.shape[0]      imginfo =np.zeros((h,w,3), np.uint8)       for j in xrange(0,h):        for i in xrange(0,w):            if (img[j,i,0]%2)==1:                imginfo[j,i,1]=255        print '.',      cv2.imshow('info', imginfo)             cv2.imwrite(fn, imginfo)          cv2.waitKey()    cv2.destroyAllWindows()         
解密后的效果图