python实现二值图数据增强
时间: 2023-10-13 09:06:45 浏览: 37
二值图数据增强通常包括旋转、翻转、缩放、平移等操作。以下是一个Python实现的二值图数据增强示例:
```python
import cv2
import numpy as np
def rotate(img, angle):
"""
旋转图像
:param img: 二值图像
:param angle: 旋转角度
:return: 旋转后的图像
"""
rows, cols = img.shape[:2]
M = cv2.getRotationMatrix2D((cols / 2, rows / 2), angle, 1)
dst = cv2.warpAffine(img, M, (cols, rows))
return dst
def flip(img, mode):
"""
翻转图像
:param img: 二值图像
:param mode: 翻转模式,0表示水平翻转,1表示垂直翻转,-1表示水平和垂直翻转
:return: 翻转后的图像
"""
dst = cv2.flip(img, mode)
return dst
def resize(img, size):
"""
缩放图像
:param img: 二值图像
:param size: 缩放尺寸
:return: 缩放后的图像
"""
dst = cv2.resize(img, size)
return dst
def shift(img, offset):
"""
平移图像
:param img: 二值图像
:param offset: 平移向量
:return: 平移后的图像
"""
rows, cols = img.shape[:2]
M = np.float32([[1, 0, offset[0]], [0, 1, offset[1]]])
dst = cv2.warpAffine(img, M, (cols, rows))
return dst
```
以上代码中,`rotate`函数实现图像旋转,`flip`函数实现图像翻转,`resize`函数实现图像缩放,`shift`函数实现图像平移。这些函数都接受一个二值图像作为输入,并返回一个增强后的二值图像。可以根据需要选择其中的一个或多个函数进行增强操作。例如,可以使用以下代码将一个二值图像进行随机旋转和水平翻转:
```python
img = cv2.imread('binary_image.jpg', 0)
# 随机旋转
angle = np.random.randint(-30, 30)
img = rotate(img, angle)
# 水平翻转
if np.random.randint(0, 2) == 1:
img = flip(img, 0)
```
以上代码中,`angle`变量随机生成一个旋转角度,`np.random.randint(0, 2)`随机生成0或1,决定是否进行水平翻转。