简单的图像数据增强方式(旋转,反转,缩放等八种并提供代码)

下面给出一个简单的实现,其中包括旋转、翻转、缩放、平移、亮度调整、对比度调整、噪声添加和颜色变换。请注意,这只是一个基本的示例,实际应用中可能需要根据任务的需求和图像的特点调整参数和增强方式。

import cv2
import numpy as np
from skimage import util

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

# 1. 旋转
angle = np.random.randint(-30, 30)
rows, cols, _ = image.shape
rotation_matrix = cv2.getRotationMatrix2D((cols/2, rows/2), angle, 1)
rotated_image = cv2.warpAffine(image, rotation_matrix, (cols, rows))

# 2. 翻转
flip_direction = np.random.randint(-1, 2)  # -1表示水平翻转,0表示不翻转,1表示垂直翻转
flipped_image = cv2.flip(rotated_image, flip_direction)

# 3. 缩放
scale_factor = np.random.uniform(0.7, 1.3)
rescaled_image = cv2.resize(flipped_image, None, fx=scale_factor, fy=scale_factor)

# 4. 平移
translation_x, translation_y = np.random.randint(-50, 51, 2)
translation_matrix = np.float32([[1, 0, translation_x], [0, 1, translation_y]])
translated_image = cv2.warpAffine(rescaled_image, translation_matrix, (cols, rows))

# 5. 亮度调整
brightness_factor = np.random.uniform(0.5, 1.5)
brightness_adjusted_image = cv2.convertScaleAbs(translated_image, alpha=brightness_factor, beta=0)

# 6. 对比度调整
contrast_factor = np.random.uniform(0.5, 1.5)
contrast_adjusted_image = cv2.convertScaleAbs(brightness_adjusted_image, alpha=contrast_factor, beta=0)

# 7. 噪声添加
noisy_image = util.random_noise(contrast_adjusted_image, mode='s&p', amount=0.02)

# 8. 颜色变换
hue_shift = np.random.randint(-10, 11)
saturation_scale = np.random.uniform(0.8, 1.2)
value_scale = np.random.uniform(0.8, 1.2)
hsv_image = cv2.cvtColor(noisy_image, cv2.COLOR_BGR2HSV)
hsv_image[:, :, 0] = (hsv_image[:, :, 0] + hue_shift) % 180
hsv_image[:, :, 1] = np.clip(hsv_image[:, :, 1] * saturation_scale, 0, 255)
hsv_image[:, :, 2] = np.clip(hsv_image[:, :, 2] * value_scale, 0, 255)
color_transformed_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2BGR)

# 显示原图和增强后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Augmented Image', color_transformed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

你可能感兴趣的:(PYTHON小技巧,python,pytorch,人工智能)