【图像分类】理论篇(4)图像增强opencv实现

随机旋转

随机旋转是一种图像增强技术,它通过将图像以随机角度进行旋转来增加数据的多样性,从而帮助改善模型的鲁棒性和泛化能力。这在训练深度学习模型时尤其有用,可以使模型更好地适应各种角度的输入。

原图像:

旋转后的图像:

 代码实现:

import cv2

import numpy as np

def random_rotate(image, max_angle):
    angle = np.random.uniform(-max_angle, max_angle)
    height, width = image.shape[:2]
    rotation_matrix = cv2.getRotationMatrix2D((width / 2, height / 2), angle, 1)
    rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height))
    return rotated_image


# 读取图像
image = cv2.imread('input.jpg')
image=cv2.resize(image,(1024,800))
# 随机旋转图像
max_rotation_angle = 30  # 最大旋转角度
rotated_image = random_rotate(image, max_rotation_angle)



# 显示原始图像和旋转后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

随机裁剪

随机裁剪是一种常见的数据增强技术,用于增加训练数据的多样性,特别是在处理不同尺寸的图像数据时。

原图像:

随机裁剪后的图像:

 代码实现:

import cv2
import numpy as np
def random_crop(image, crop_size):

    height, width = image.shape[:2]
    crop_height, crop_width = crop_size
    if crop_width >= width or crop_height >= height:
        raise ValueError("Crop size should be smaller than image size")
    x = np.random.randint(0, width - crop_width + 1)
    y = np.random.randint(0, height - crop_height + 1)
    cropped_image = image[y:y+crop_height, x:x+crop_width]
    return cropped_image

# 读取图像
image = cv2.imread('input.jpg')
image=cv2.resize(image,(1024,800))
# 随机裁剪到固定大小
crop_size = (200, 200)  # 裁剪尺寸
cropped_image = random_crop(image, crop_size)

# 显示原始图像和裁剪后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

颜色增强

  • 颜色平衡调整:调整图像中不同颜色通道的增益,以改变图像的颜色平衡。
  • 颜色增强:通过增加或减少颜色通道的值,增强图像的色彩鲜艳度。

原图像:

 亮度调整之后的图像:

 代码实现:

def enhance_color(image, alpha, beta):
    enhanced_image = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)
    return enhanced_image

image = cv2.imread('input.jpg')
color_enhanced_image = enhance_color(image, 1.2, 20)

亮度和对比度调整

  • 亮度调整:改变图像的亮度水平,使图像变得更亮或更暗。
  • 对比度调整:调整图像中像素值的范围,以扩展或缩小亮度差异,使图像更具视觉对比度。

原图:

 

 亮度、对比度调整后的图像:

代码实现:

import cv2

def adjust_brightness_contrast(image, alpha, beta):
    adjusted_image = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)
    return adjusted_image

image = cv2.imread('input.jpg')
brightened_image = adjust_brightness_contrast(image, 1.2, 20)

图像平滑与锐化

  • 图像平滑:应用模糊滤波器来减少图像中的噪声,同时也可能使图像变得模糊。
  • 图像锐化:通过增强图像中的边缘和细节,使图像看起来更清晰。

 原图:

平滑后的图像:

 锐化后的图像:

代码实现:

def apply_image_smoothing(image):
    smoothed_image = cv2.GaussianBlur(image, (5, 5), 0)
    return smoothed_image

def apply_image_sharpening(image):
    kernel = np.array([[-1, -1, -1],
                       [-1,  9, -1],
                       [-1, -1, -1]])
    sharpened_image = cv2.filter2D(image, -1, kernel)
    return sharpened_image

image = cv2.imread('input.jpg')
smoothed_image = apply_image_smoothing(image)
sharpened_image = apply_image_sharpening(image)

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechMasterPlus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值