技巧一:曝光与对比度的调整

在修图过程中,曝光和对比度的调整是至关重要的。通过合理调整,可以使照片更加生动,细节更加丰富。以下是一个简单的调整步骤:

import cv2
import numpy as np

# 读取图片
image = cv2.imread('example.jpg')

# 调整曝光
brightness = 1.2
image = cv2.addWeighted(image, brightness, np.zeros(image.shape, dtype=image.dtype), 0, 0)

# 调整对比度
contrast = 1.5
image = cv2.normalize(image, None, alpha=contrast, beta=255-contrast*255, norm_type=cv2.NORM_MINMAX)

# 显示结果
cv2.imshow('Adjust Exposure and Contrast', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧二:色彩平衡的运用

色彩平衡的运用可以使照片呈现出不同的氛围。以下是一个简单的色彩平衡调整步骤:

def adjust_color_balance(image, temp, saturation):
    # 转换为HSV空间
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

    # 调整色调
    hsv[:, :, 0] = temp
    temp = np.uint8(hsv)

    # 调整饱和度
    v = cv2.split(temp)[2]
    v[v <= 150] += saturation
    v[v > 150] -= saturation
    v = v.clip(0, 255)
    v = v.reshape((1, 1, 1))
    temp = cv2.merge([hsv[:, :, 0], hsv[:, :, 1], v])

    # 转换回BGR空间
    image = cv2.cvtColor(temp, cv2.COLOR_HSV2BGR)
    return image

# 调整色彩平衡
image = adjust_color_balance(image, temp=50, saturation=30)

# 显示结果
cv2.imshow('Adjust Color Balance', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧三:局部调色

局部调色可以针对照片中的特定区域进行调整,使照片更加自然。以下是一个简单的局部调色步骤:

def local_color_adjust(image, mask, r_gain, g_gain, b_gain):
    # 读取图像
    r, g, b = cv2.split(image)

    # 根据mask调整颜色
    r = cv2.multiply(r, mask)
    g = cv2.multiply(g, mask)
    b = cv2.multiply(b, mask)

    # 应用增益
    r = cv2.add(r, r_gain)
    g = cv2.add(g, g_gain)
    b = cv2.add(b, b_gain)

    # 合并通道
    image = cv2.merge([r, g, b])
    return image

# 创建掩码
mask = np.zeros_like(image, dtype=np.uint8)
mask[0:200, 0:200] = 255

# 局部调色
image = local_color_adjust(image, mask, r_gain=30, g_gain=50, b_gain=20)

# 显示结果
cv2.imshow('Local Color Adjust', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧四:锐化与模糊

锐化可以使照片更加清晰,而模糊可以使照片产生不同的艺术效果。以下是一个简单的锐化与模糊步骤:

# 锐化
image = cv2.filter2D(image, -1, np.array([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]]))

# 模糊
image = cv2.GaussianBlur(image, (5, 5), 0)

# 显示结果
cv2.imshow('Sharpen and Blur', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧五:去除噪点

去除噪点可以使照片更加清晰,以下是一个简单的去除噪点步骤:

# 中值滤波去除噪点
image = cv2.medianBlur(image, 3)

# 显示结果
cv2.imshow('Remove Noise', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧六:修复划痕与污渍

修复划痕与污渍可以使照片更加完美,以下是一个简单的修复步骤:

def repair_scratches(image, radius=10):
    # 创建修复掩码
    mask = np.zeros_like(image, dtype=np.uint8)
    mask[:radius, :] = 255
    mask[:, :radius] = 255

    # 按掩码修复划痕
    image = cv2.copyMakeBorder(image, radius, radius, radius, radius, cv2.BORDER_REPLICATE)
    for i in range(radius):
        for j in range(radius):
            image[i:i+1, j:j+1] = cv2.repair(image[i:i+1, j:j+1], mask[i:i+1, j:j+1])
    image = image[radius:-radius, radius:-radius]
    return image

# 修复划痕与污渍
image = repair_scratches(image)

# 显示结果
cv2.imshow('Repair Scratches and Stains', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧七:人像美容

人像美容可以使照片中的人物更加美丽,以下是一个简单的人像美容步骤:

# 使用高斯模糊平滑皮肤
image = cv2.GaussianBlur(image, (21, 21), 0)

# 使用阈值分割去除皮肤上的小斑点
image = cv2.threshold(image, 220, 255, cv2.THRESH_BINARY)[1]

# 使用修复划痕函数去除皮肤上的划痕与污渍
image = repair_scratches(image)

# 显示结果
cv2.imshow('Portrait Beauty', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧八:图像裁剪与拼接

图像裁剪与拼接可以使照片更加完美,以下是一个简单的裁剪与拼接步骤:

# 裁剪图像
image = image[100:300, 100:300]

# 拼接图像
image = cv2.hconcat([image, image])

# 显示结果
cv2.imshow('Image Crop and Stich', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧九:图像风格转换

图像风格转换可以使照片呈现出不同的艺术效果,以下是一个简单的图像风格转换步骤:

# 定义风格图像
style_image = cv2.imread('style.jpg')

# 计算风格图像的Gram矩阵
gram_matrix = cv2.calcgram(style_image, [0, 1, 2], 1, (20, 20))

# 使用Gram矩阵进行风格转换
style_image = cv2.warpAffine(style_image, np.float32([[1, 0, 0], [0, 1, 0], [0, 0, 1]]), (image.shape[1], image.shape[0]))
style_image = cv2.cvtColor(style_image, cv2.COLOR_BGR2GRAY)
style_image = cv2.resize(style_image, (20, 20))
style_image = style_image * gram_matrix / np.sum(gram_matrix)

# 显示结果
cv2.imshow('Style Transfer', style_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

技巧十:图像超分辨率

图像超分辨率可以使低分辨率图像变得更加清晰,以下是一个简单的图像超分辨率步骤:

# 使用PySR进行超分辨率
import pysr

# 读取低分辨率图像
image = cv2.imread('low_resolution.jpg')

# 使用PySR进行超分辨率
result = pysr.SR(image, scale=4)

# 显示结果
cv2.imshow('Super-Resolution', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上是修图师必备的十大常用技巧,希望对您有所帮助。在修图过程中,可以根据具体需求灵活运用这些技巧,使照片更加完美。