import cv2
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 设置matplotlib的字体为SimHei,支持中文显示
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 或者其他支持中文的字体
matplotlib.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def add_watermark(image_path, watermark_path):
# 读取原始图像和水印图像
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
watermark = cv2.imread(watermark_path, cv2.IMREAD_GRAYSCALE)
watermark = cv2.resize(watermark, (image.shape[1], image.shape[0]))
# 将原始图像和水印图像转换到频域
f_image = np.fft.fft2(image)
f_image_shifted = np.fft.fftshift(f_image)
f_watermark = np.fft.fft2(watermark)
# 嵌入水印
alpha = 0.1 # 水印强度因子
f_image_shifted += alpha * f_watermark
# 将嵌入水印后的频域表示转换回空间域
f_ishift = np.fft.ifftshift(f_image_shifted)
img_back =
python实现离散傅里叶变换(DFT)进行图片水印嵌入
于 2024-01-22 09:15:54 首次发布