前言

隐藏图片就是在白色背景和黑色背景显示出不同的图片,之前qq可以显示,现在好像也不行了,原因就是原来的qq,在发出来默认是白色背景,而点开后是黑色背景。但是这个原理还是挺有意思的,所以简单的研究了一下

隐藏图原理

参考文章
原理参考文章里面说的很详细了,这里不多赘述。
一个要注意的一点是,在黑色背景显示的图片需要进行一下处理,否者效果及其不好,就是降低对比度,并提高亮度(为了在白色背景下隐藏的更好),这一点也是文章没有提到的。

代码实现

import time
import cv2
import numpy as np
import sys Wimg = cv2.imread('1.jpg') #白色背景显示的图片 Wimg为white-img缩写
Wimg = cv2.cvtColor(Wimg,cv2.COLOR_BGR2GRAY)
Wimg = cv2.cvtColor(Wimg,cv2.COLOR_GRAY2BGRA) Bimg = cv2.imread('2.jpg') #黑色背景显示的图片 Bimg为black-img缩写
Bimg = cv2.cvtColor(Bimg,cv2.COLOR_BGR2GRAY)
Bimg = cv2.cvtColor(Bimg,cv2.COLOR_GRAY2BGRA) h1,w1 = Wimg.shape[:2]
h2,w2 = Bimg.shape[:2]
h = min([h1,h2])
w = min([w1,w2])
# 奇数列行,为了交错排列两张图片
if h % 2 == 0:
h -= 1
if w % 2 == 0:
w -= 1 # 降低对比度,并提高亮度
Bimg = cv2.addWeighted(Bimg,0.3,0,0,100) Wimg = cv2.resize(Wimg,(w,h))
Bimg = cv2.resize(Bimg,(w,h))
Rimg = np.zeros([h,w,4],dtype=np.uint8)
flag = True
print(h,w)
for y in range(h):
for x in range(w):
if flag:
# 显示白色图片
Rimg[y,x] = Wimg[y,x]*0.3
Rimg[y,x,3] = 255-Wimg[y,x,0]
flag = False
else:
# 显示黑色图片
Rimg[y,x] = Bimg[y,x]
Rimg[y,x,3] = Bimg[y,x,0]
flag = True cv2.imwrite('result.png',Rimg, [cv2.IMWRITE_PNG_COMPRESSION, 0])

效果查看

我这里直接用 gimp 新建图层来看效果,这样效果也会更加明显。
白色背景显示的图片:

黑色背景显示的图片:

最新文章

  1. 从零开始编写自己的C#框架(15)——Web层后端登陆功能
  2. golang内存分配
  3. 1.注册或登录页面设计:UILabel,UIButton,UITextField
  4. COM编程概述
  5. Dynamics CRM4.0 和 Dynamics CRM2011 Plugin 实现一样的功能的方法的比较
  6. emulatorarm.exe已停止工作
  7. PHP中$_SERVER获取当前页面的完整URL地址
  8. java Object类
  9. PHP问题Parse error: syntax error, unexpected end of file in
  10. Codeforces Round #312 (Div. 2) C.Amr and Chemistry
  11. 编译boost python模块遇到的错误:../../libraries/boost_1_44_0/boost/python/detail/wrap_python.hpp:75:24: fatal error: patchlevel.h: No such file or directory
  12. char *p 和char *p[]
  13. 什么是PHP
  14. C# Memory Cache 踩坑记录
  15. 【English】八、食物相关
  16. PHP迭代器:Iterator和IteratorAggregate
  17. hadoop家族技能图谱
  18. sql server 日志文件结构及误操作数据找回
  19. Java 创建线程/停止线程
  20. JavaScript实现多张图片上传功能

热门文章

  1. 《Win10——常用快捷键》
  2. .NET WebAPI 自定义 NullableConverter 解决请求入参 “”空字符触发转换异常问题
  3. 带你了解CANN的目标检测与识别一站式方案
  4. Elasticsearch:Dynamic mapping
  5. JuiceFS 在 Elasticsearch/ClickHouse 温冷数据存储中的实践
  6. WPF开发经验-WPF的TextBox控件的MouseDown事件不响应的解决方法
  7. 关于AWS-IAM-certificate-证书的说明
  8. P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并 (树上差分+线段树合并)
  9. CentOS 7.9 安装 rabbitmq-3.10.2
  10. virtualbox的Linux虚拟磁盘大小调整及注意事项