qr分解给图片加水印代码
时间: 2023-08-04 18:08:35 浏览: 181
以下是使用QR分解给图片加水印的Python代码:
```python
from PIL import Image
import numpy as np
import qrcode
# 加载图片
img = Image.open('input_image.jpg')
# 创建QR码
qr = qrcode.QRCode(version=None, error_correction=qrcode.constants.ERROR_CORRECT_M, box_size=10, border=4)
qr.add_data('watermark_text')
qr.make(fit=True)
qr_img = qr.make_image(fill_color="black", back_color="white")
# 将QR码转化为numpy数组
qr_np = np.array(qr_img)
# 对图片进行QR分解
img_np = np.array(img)
q, r = np.linalg.qr(img_np)
# 将QR码嵌入到R矩阵中
watermarked_r = r + 0.1 * qr_np[:, :, 0][:, :, np.newaxis]
# 合并Q矩阵和嵌入了QR码的R矩阵
watermarked_img = np.dot(q, watermarked_r)
# 将数组转化为图片并保存
watermarked_img = Image.fromarray(np.uint8(watermarked_img))
watermarked_img.save('watermarked_image.jpg')
```
上述代码中,我们首先使用`PIL`库加载原始图片。然后使用`qrcode`库创建QR码,并将QR码转换为numpy数组。接下来,我们使用QR分解将原始图片分解为Q矩阵和R矩阵,然后将QR码嵌入到R矩阵中。最后,我们将Q矩阵和嵌入了QR码的R矩阵合并,并将合并后的数组转换为图片并保存。
阅读全文