隐写

效果

隐写前

隐写后

灰度值直方图差别

部分源码

def dec_to_bin(dec):

return '{:08b}'.format(dec)

def bin_to_dec(binary_code):

dec = 0

for i in range(len(binary_code) - 1):

dec = dec + int(binary_code[i]) * int(pow(2, 7 - i))

return dec

# 文件信息转二进制流

def read_data_file(path):

fp = open(path, "rb")

stream = ""

s = fp.read()

for i in range(len(s)):

tmp = bin(s[i]).zfill(8)

stream = stream + tmp.replace('0b', '')

fp.close()

return stream

def lsb(image, data_stream, random_index):

for i in range(len(stream)):

x = random_index[i] % image.shape[0]

y = int(random_index[i] / image.shape[0])

value = image[x, y]

if value % 2 != stream[i]:

if value % 2 == 1:

image[x, y] = value - 1

else:

image[x, y] = value + 1

return image

分析

效果

由于二次隐写的随机性,分析图片存在误差,但能够看出是否被隐写

原图

隐写后

部分源码

# 进行二次隐写

def random_steg(image, rate):

pixel_len = image.shape[0] * image.shape[1]

random_ls = random.sample(range(0, pixel_len), int(pixel_len * rate))

random_ls.sort()

for i in random_ls:

k = random.randint(0, 1)

x = i % image.shape[0]

y = int(i / image.shape[0])

value = image[x, y]

if not value % 2 == k:

if value % 2 == 1:

image[x, y] = value - 1

else:

image[x, y] = value + 1

return image

# 获取灰度值

def get_gary_value(my_img):

pixel_value = []

gary_index = []

for i in range(256):

pixel_value.append(0)

gary_index.append(i)

for i in range(my_img.shape[0]):

for j in range(my_img.shape[1]):

pixel_value[my_img[i][j]] = pixel_value[my_img[i][j]] + 1

return pixel_value, gary_index

# 计算F1,F2

def calculate_f1f2(values):

f1 = 0

f2 = 0

for i in range(128):

tmp = abs(values[2 * i + 1] - values[2 * i])

f1 += tmp

for j in range(127):

tmp = abs(values[2 * j + 2] - values[2 * j + 1])

f2 += tmp

f2 += abs(values[0] - values[255])

return f1, f2

# 分析函数

def analysis(path):

img = cv2.imread(path, 0)

# 二次随机隐写

F1 = []

F2 = []

index = []

for k in range(11):

rate = k / 10

index.append(rate)

new_img = random_steg(img, rate)

new_count, new_index = get_gary_value(new_img)

f_1, f_2 = calculate_f1f2(new_count)

F1.append(f_1)

F2.append(f_2)

draw(F1, F2, index)

相关链接

项目链接

参考文档

python图片隐写_基于python的LSB隐写与分析相关推荐

  1. python图片水印软件_基于Python制作的控制鼠标删除图片水印的小工具

    在做视频或者图片处理的时候,我们经常会遇到存在水印的情况,或者我们需要去除图片的某一个部分, 这时候我们就需要想办法去除不需要的这一部分.下面这个工具能够控制鼠标将图片上的任意部分改变颜色, 从而达到 ...

  2. python生成json接口_基于python的Flask框架写json接口并且结合eolinker进行接口测试

    一.前言 很多时候为了提高软件开发的效率,后端程序人员理想状态下应该编写程序测试接口供前端程序人员进行测试,以便前端的开发.笔者由于项目的需求近期尝试学习了一下测试接口的编写,以Python+Flas ...

  3. python opencv数字识别_基于模板匹配的手写数字识别(python+opencv)

    智能计算课第一周的实验是做基于模板匹配的手写数字识别,光听见就很感兴趣,于是决定认真做做这个实验,本实验基于python3+opencv的python版本,所用到的知识都比较简单,基本上边学边做,技术 ...

  4. python画素描画_基于python实现把图片转换成素描

    这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦 ...

  5. python数据分析毕业论文摘要_基于python的毕业论文怎么写?

    谢邀! 基于python的在线支付网站的设计与实现,这个问题如果放在公司的话,还是一个挺大层面的东西!且听我娓娓道来~ 1.基于Python,那首先你要会Python基础 2.网站,那你要会前端,至少 ...

  6. 大学python论文2000字_基于python的毕业论文怎么写?

    谢邀! 基于python的在线支付网站的设计与实现,这个问题如果放在公司的话,还是一个挺大层面的东西!且听我娓娓道来~ 1.基于Python,那首先你要会Python基础 2.网站,那你要会前端,至少 ...

  7. python语法元素测试_基于python全局设置id 自动化测试元素定位过程解析

    背景: 在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位. 一.python准备工作: 功能:用自动化的方式进行批量处理. 比如,你想 ...

  8. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  9. python编程控制机器人_基于Python开发的微信图灵机器人

    在过去的几个月中,由于在新生群中回答问题费时费力,同时又有许多重复而又有固定答案的回答,我受到一些知乎文章的启发,维护了一个基于itchat的群聊机器人.从刚开始接入图灵机器人时只会尬聊的机器人,之后 ...

  10. python 卡方检验批量筛选_基于Python的遥感特征筛选—卡方检验筛选

    引言 目前,遥感图像在模式识别.图像分割.地面参数反演研究中有着广泛的应用.遥感图像一般具有多个波段,每个波段均反映了地物的不同波谱特性.相对于图像分类而言,不同的波长位置的波谱反射可能存在较多的信息 ...

最新文章

  1. 特征工程包含那些步骤?如何进行特征的迭代?
  2. getComputedStyle currentStyle 获取当前元素所有最终使用的CSS属性值
  3. arcgis server for flex中文乱码问题(转)
  4. c#基础知识第十一节
  5. mysql表单查询_MySQL表单集合查询
  6. 飞行器真的是计算机!
  7. vtkpolydata图形着色
  8. mysql-查看表-修改表-删除表
  9. 数据结构Java版之查找算法(三)
  10. 发力金融市场,中兴通讯有何硬实力?
  11. 【原创】Oracle RAC原理和安装
  12. java轮播图_RxJava 实现ViewPager的轮播图
  13. dubbo protocol port 消费者端_Dubbo 优雅停机演进之路
  14. 如何实现音频合成立体声录制?
  15. js 延迟几秒执行_息息相关的 JS 同步,异步和事件轮询
  16. 用php做的图书管管理系统,PHP自习室图书馆座位管理系统
  17. coolpad手机量身打造的刷机工具--下载助手_V2.2.4(Mini_AD_Coolpad)
  18. 从入门到精通我是这样学习算法的
  19. 一位过来人:也谈谈体制内 • 体制外
  20. 为什么装完计算机系统后进不去,电脑系统装完后为啥进不去?

热门文章

  1. MySQL的常用SQL脚本
  2. python怎么保存为nii文件_Ubuntu+python将nii图像保存成png格式
  3. 赣南师范大学科技学院计算机科学与技术,2021江西独立学院转设最新消息(新增两所):赣南师范大学科技学院转设公办?...
  4. 电脑如何连接蓝牙音箱_蓝牙音箱如何办理SRRC认证
  5. 第二轮 冲次会议第一次
  6. ScrollView
  7. 《计算机系统:系统架构与操作系统的高度集成》——3.2 处理器实现涉及什么...
  8. drill 数据库查询方式简单说明
  9. Android Studio第二十七期 - RecycleView不同item布局
  10. warning:1071 (42000) Specified key was too long;max key length is 1000 bytes