import cv2 import matplotlib.pyplot as plt import ImageFilter as filter import numpy as np #浮雕 def relief(img, Degree): # 参数为原图像和浮雕图像程度 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) h, w = gray.shape[0:2] # 定义空白图像,存放图像浮雕处理之后的图片 img1 = np.zeros((h, w), dtype=gray.dtype) # 通过对原始图像进行遍历,通过浮雕公式修改像素值,然后进行浮雕处理 for i in range(h): for j in range(w - 1): # 前一个像素值 a = gray[i, j] # 后一个像素值 b = gray[i, j + 1] # 新的像素值,防止像素溢出 img1[i, j] = min(max((int(a) - int(b) + Degree), 0), 255) return img1 #素描 def Nostalgia(img): gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #通过高斯滤波过滤噪声 gaussian = cv2.GaussianBlur(gray, (3,3), 0) #通过canny算法提取图像轮轮廓 canny = cv2.Canny(gaussian, 50, 140) #对轮廓图像进行反二进制阈值化处理 ret, result = cv2.threshold(canny, 90, 255, cv2.THRESH_BINARY_INV) return result #水墨画 def stylization(img): result = cv2.stylization(img, sigma_s=60, sigma_r=0.6) return result #连环画 #美颜磨皮 def beauty_filter(image): # 转换为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 使用Bilateral Filter双边滤波平滑皮肤,同时保留边缘细节 bilateral = cv2.bilateralFilter(image, 9, 75, 75) # 使用Gaussian Blur进一步模糊,达到柔化效果 blur = cv2.GaussianBlur(bilateral, (23, 23), 30) # 计算原图与模糊后的图像的差异 diff = image - blur # 将差异图与原图融合,控制美颜程度 result = image + diff * 0.5 # 确保像素值不超过255或低于0 result = np.clip(result, 0, 255).astype(np.uint8) return result #button3:图像转换为灰度图像 def grayscale(image): global display_img,current_img return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)