?????https://www.cnblogs.com/luxlu/p/19606190/gfsj

[中等] QR1

010打开 没问题 没有文件隐藏 是图片本身的隐写 仔细看有很多黑色像素点

法1

不是扫描全能王的暗广



法2

微小的黑点构成二维码,但太细看不清。让黑点变粗,就像 PS 里描边一样

原始图(白底+细黑点)
       ↓
二值化 → 纯白底 + 纯黑点
       ↓
反转   → 黑底 + 白点
       ↓
膨胀   → 黑底 + 变粗的白点 ← 描边效果
       ↓
反转   → 白底 + 变粗的黑点
       ↓
保存 → 清晰二维码
import cv2
import numpy as np

img = cv2.imread(“enc.png”, 0) # 读灰度图
_, binary = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU)
kernel = np.ones((10, 10), np.uint8) # 描边宽度=10
dilated = cv2.dilate(255 - binary, kernel) # 膨胀黑点
result = 255 - dilated # 反转回黑白
cv2.imwrite(“output.png”, result)

这样看图片也可以看出来是放大了很多很多小的像素点

法3

每两个黑点之间隔了13个像素

from PIL import Image

两个黑色像素但间隔13像素 x,y起于526

filename = “enc.png”
img = Image.open(filename).convert(‘RGB’)

print(img.size) # 打印图片大小

width = img.size[0] # 长度
height = img.size[1] # 宽度
for x in range(526, width-526,13): # 遍历所有长度的点,步长为13
for y in range(526,height-526, 13): # 遍历所有宽度的点,步长为13
rgb1 = img.getpixel((x, y))
rgb2 = img.getpixel((x+13,y+13)) #获取偏移13像素位置得点得rgb,即当前(x,y)坐标右下角位置得点
if rgb1 == rgb2 == (0, 0, 0):
for i in range(14):
for j in range(14):
img.putpixel((x+i,y+j),(0,0,0))
img.save(“result.png”) # 保存修改像素点后的图片