import cv2
import numpy as np

"""功能一:"""
#1图像转换为灰度图像
def grayscale(image):
    return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

#1垂直镜像
def mirror_vertical(image):
    vertical = cv2.flip(image,0,dst=None) 
    return vertical

#1图像放缩（！）
def change_size(image):
    change_image = cv2.resize(image, (256, 256))
    return change_image

#1旋转画布
def rotate(image):
    rows, cols, depth = image.shape
    rotation = cv2.getRotationMatrix2D((cols / 2, rows / 2), 90, 1) 
    return rotation

#1水平镜像
def mirror_horizontal(image):
    horizontal = cv2.flip(image,1,dst=None) 
    return horizontal

#1保持横纵比例
def keep_shape(image):
    # 获取图像的高度和宽度
    height, width = image.shape[:2]
    # 计算裁剪区域crop
    target_aspect_ratio = 16 / 9
    if width / height > target_aspect_ratio:
        new_width = int(height * target_aspect_ratio)
        offset = (width - new_width) // 2
        crop = image[:, offset:offset + new_width]
    else:
        new_height = int(width / target_aspect_ratio)
        offset = (height - new_height) // 2
        crop = image[offset:offset + new_height, :]
    return crop

#1还原原始图像


"""功能二"""
#2高斯滤波模糊去噪
def apply_blur(image):
    blurred = cv2.GaussianBlur(image, (5, 5), 0)
    return blurred

#2肤色处理
def skin(image):
    # 将图像从BGR转换到HSV
    hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    # 定义肤色的HSV范围
    lower_skin = np.array([0, 20, 70], dtype=np.uint8)
    upper_skin = np.array([20, 255, 255], dtype=np.uint8)
    # 创建掩码
    mask = cv2.inRange(hsv_image, lower_skin, upper_skin)
    # 应用掩码到原始图像
    skin_image = cv2.bitwise_and(image, image, mask=mask)
    return skin_image

#2腐蚀
def center_erosion(image):
    erode = cv2.imread(image, cv2.IMREAD_UNCHANGED)
    # 使用一个5x5的交叉型结构元（核心在几何中心）对二值图片src进行腐蚀
    kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5));
    erosion = cv2.erode(erode,kernel)
    return erosion


"""功能三"""
#边缘检测
def detect_edges(image):
    """使用Canny边缘检测算法检测图像的边缘"""
    edges = cv2.Canny(image, 100, 200)
    return edges




# 更多自定义处理方法...

#识别边缘

    

