python图片增强代码
时间: 2023-10-26 11:03:53 浏览: 30
以下是一个使用Pillow库进行图像增强的Python代码示例:
```python
from PIL import Image, ImageEnhance
# 打开图像
im = Image.open("example.jpg")
# 调整亮度
enhancer = ImageEnhance.Brightness(im)
im = enhancer.enhance(1.2) # 亮度增加20%
# 调整对比度
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(1.5) # 对比度增加50%
# 调整色彩饱和度
enhancer = ImageEnhance.Color(im)
im = enhancer.enhance(1.2) # 饱和度增加20%
# 保存图像
im.save("enhanced.jpg")
```
在上面的示例中,我们使用了Pillow库中的ImageEnhance模块来进行图像增强。我们首先打开了一个图像,然后使用不同的ImageEnhance对象来调整亮度、对比度和色彩饱和度。最后,我们将增强后的图像保存到了磁盘上。您可以根据需要调整上述参数来获得不同的增强效果。
相关问题
图片数据增强python代码
以下是图片数据增强的Python代码,包括裁剪、平移、改变亮度、加噪声、旋转、镜像和cutout等方法:
```python
import cv2
import numpy as np
import random
# 裁剪
def crop(image, bbox):
x1, y1, x2, y2 = bbox
return image[y1:y2, x1:x2]
# 平移
def translate(image, bbox, x_offset, y_offset):
x1, y1, x2, y2 = bbox
M = np.float32([[1, 0, x_offset], [0, 1, y_offset]])
image = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))
bbox = [x1 + x_offset, y1 + y_offset, x2 + x_offset, y2 + y_offset]
return image, bbox
# 改变亮度
def brightness(image, brightness_factor):
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hsv[:, :, 2] = hsv[:, :, 2] * brightness_factor
return cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
# 加噪声
def noise(image):
row, col, ch = image.shape
mean = 0
var = 0.1
sigma = var ** 0.5
gauss = np.random.normal(mean, sigma, (row, col, ch))
gauss = gauss.reshape(row, col, ch)
noisy = image + gauss
return noisy
# 旋转
def rotate(image, bbox, angle):
x1, y1, x2, y2 = bbox
center = ((x1 + x2) / 2, (y1 + y2) / 2)
M = cv2.getRotationMatrix2D(center, angle, 1)
image = cv2.warpAffine(image, M, (image.shape[1], image.shape[0]))
x1_new, y1_new = np.dot(M, np.array([x1, y1, 1]))
x2_new, y2_new = np.dot(M, np.array([x2, y2, 1]))
bbox = [int(x1_new), int(y1_new), int(x2_new), int(y2_new)]
return image, bbox
# 镜像
def flip(image, bbox):
x1, y1, x2, y2 = bbox
image = cv2.flip(image, 1)
bbox = [image.shape[1] - x2, y1, image.shape[1] - x1, y2]
return image, bbox
# cutout
def cutout(image, bbox, s):
x1, y1, x2, y2 = bbox
mask = np.ones((y2 - y1, x2 - x1, 3), np.float32)
mask[random.randint(0, y2 - y1 - s):random.randint(0, y2 - y1), random.randint(0, x2 - x1 - s):random.randint(0, x2 - x1)] = 0
image[y1:y2, x1:x2] = image[y1:y2, x1:x2] * mask
return image
# 测试
image = cv2.imread('test.jpg')
bbox = [100, 100, 200, 200]
image_crop = crop(image, bbox)
image_translate, bbox_translate = translate(image, bbox, 50, 50)
image_brightness = brightness(image, 1.5)
image_noise = noise(image)
image_rotate, bbox_rotate = rotate(image, bbox, 30)
image_flip, bbox_flip = flip(image, bbox)
image_cutout = cutout(image, bbox, 50)
# 相关问题:
--相关问题--:
图片数据增强的python代码
图片数据增强是指通过对原始图像进行一系列的变换和处理,生成新的图像来扩充训练数据集的方法。Python提供了多种库可以用于实现图片数据增强,下面是一个使用imgaug库实现图片数据增强的示例代码:
```python
import imgaug.augmenters as iaa
import cv2
# 读取原始图像
image = cv2.imread('original_image.jpg')
# 定义图像增强的操作
augmentation = iaa.Sequential([
iaa.Fliplr(0.5), # 随机水平翻转50%的图像
iaa.Crop(percent=(0, 0.1)), # 随机裁剪图像的10%大小
iaa.GaussianBlur(sigma=(0, 0.5)), # 随机应用高斯模糊,模糊程度可调
iaa.AdditiveGaussianNoise(scale=(0, 0.1 * 255)) # 随机添加高斯噪声,强度可调
])
# 利用增强操作生成新的图像
augmented_images = augmentation(images=[image])
# 保存增强后的图像
for i, new_image in enumerate(augmented_images):
cv2.imwrite(f'augmented_image_{i}.jpg', new_image)
```
上述代码首先读取原始图像,然后通过定义一系列的图像增强操作来生成新的图像。常用的图像增强操作包括翻转、裁剪、模糊和添加噪声等。最后,利用生成的增强操作来生成新的图片,并保存在本地。这样就能通过生成的新图像来扩充训练数据集,提高模型的泛化能力。