使用opencv进行数据增强
时间: 2023-11-16 11:17:08 浏览: 28
以下是使用 OpenCV 进行图像数据增强的代码示例:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('example.jpg')
# 随机裁剪
x, y = img.shape[1], img.shape[0]
startx = int(np.random.uniform(0, x * 0.2))
starty = int(np.random.uniform(0, y * 0.2))
endx = int(np.random.uniform(x * 0.8, x))
endy = int(np.random.uniform(y * 0.8, y))
cropped = img[starty:endy, startx:endx]
# 随机旋转
rows, cols = cropped.shape[:2]
M = cv2.getRotationMatrix2D((cols / 2, rows / 2), np.random.uniform(-30, 30), 1)
rotated = cv2.warpAffine(cropped, M, (cols, rows))
# 随机水平翻转
flipped = cv2.flip(rotated, 1)
# 随机加噪声
noise = np.zeros_like(flipped)
cv2.randn(noise, 0, 255 * 0.05) # 噪声强度为图像最大值的5%
noised = cv2.add(flipped, noise)
# 显示增强后的图像
cv2.imshow('augmented image', noised)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
此代码使用了 OpenCV 库对图像进行增强,包括随机裁剪、旋转、水平翻转、加噪声等操作。可以根据需要调整增强方式,并通过 `imshow` 方法显示增强后的图像。此外,OpenCV 还提供了很多其他的图像处理函数,如滤波、边缘检测、形态学操作等,可以用于图像增强和数据预处理。