利用加噪方法实现的图片混淆器,比较像可以解码的马赛克生成器,目前版本还不抗有损压缩,所以你得用原图传输,不能有损压缩图片
用到的python库有:opencv2,numpy,shutil
如果需要使用需要先 install 这三个库,并确保 python 版本高于3.6
main.py 是主函数,运行这个就可以了,最开始根目录内没有文件夹,当你第一次运行后,会在根目录内生成 4 个文件夹:
- confIn 文件夹用来存放你要混淆的图片,处理后的图片会放在 confIn 里的 over 文件夹中
- confOut 文件夹用来输出混淆后的图片
- unconfIn 文件夹用来存放你要反混淆的图片,处理后的图片会放在 unconfIn 里的 over 文件夹中
- unconfOut 文件夹用来输出反混淆后的图片
confuse.py 是定义混淆类的文件
steganography.py 是定义图片隐写方法的文件,代码有部分冗余,因为是从以前的项目里摘出来的
运行main.py程序后输入1或2,进入混淆或反混淆 反混淆你什么都不用做,等输出就行 混淆会给你展示一个图片框:(暂无移动端适配)
- 滑轮上下可以放大图片和缩小图片
- 鼠标可以点击框移动
- ctrl + 鼠标左键可以选要混淆的矩阵点,点两下确定一个矩阵,最好是左上和右下这样的,其他顺序我没试过应该会报错
- 直接关闭就相当于确认选定了,请保证你一定点了偶数个点好吧,这个版本我还没有添加增强鲁棒性的代码,所以你点了奇数个点它会闪退
有三种模式可以选择:
- 图片隐写模式(对应按键 1),首先吧,这种方式你可以基本上存储无数的矩阵信息,而且也不用带一个额外码,给图就能反混淆,比较方便,推荐
- 图片条模式(对应按键 0)是隐写的弱化版本,在一定程度上抗压缩,不过我还没有写这个抗压缩的处理部分,所以说这个版本里是完全的下为替代,给图就能反混淆,不建议使用
- 额外码模式(对应按键 2)混淆之后自带一个base64编码的字符串,你需要拿这个字符串去反混淆才行,相当于钥匙,不方便,一般是加密混淆时候用的
注意一定要混淆和反混淆一定要原图,如果被压缩后的图解出来会有数据损失,以后的版本可能会加入一些抗压缩手段
祝你抛出异常愉快!