生成的二维码往往有白色的底,把二维码放到窗户上或者海报上显得突兀,下面的代码可以将白色背景去掉。
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image003.png')
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# 创建一个透明背景的图像
transparent_image = np.zeros((*image.shape[:2], 4), dtype=np.uint8)
# 将黑色部分填充为黑色,白色部分设置为透明
for i in range(binary.shape[0]):
for j in range(binary.shape[1]):
if binary[i, j] == 0: # 黑色部分
transparent_image[i, j] = [0, 0, 0, 255] # 黑色,完全不透明
else: # 白色部分
transparent_image[i, j] = [0, 0, 0, 0] # 完全透明
# 保存为带透明背景的 PNG 文件
cv2.imwrite('qrcode_no_background003.png', transparent_image)
print("生成无背景的二维码图片成功!")