1.尺寸放大缩小
def Scale(image,scale):
return cv2.resize(image,None,fx=scale,fy=scale,interpolation=cv2.INTER_LINEAR)
path="test/1.jpg"
img=cv2.imread(path)
cv2.imshow("old_img",img)#第一个参数表示展示出来图片的标题,第二个参数就是展示的图片
cv2.waitkey(0)
new_img=Scale(img,0.5)
cv2.imshow("new_img",new_img)
cv2.waitkey(0)
2.水平翻转和垂直翻转
#水平镜像
def Horizontal(image):
return cv2.resize(image,1,dst=None)
#垂直翻转
def Vertical(image):
return cv2.flip(image,0,dst=None)
path="test/1.jpg"
img=cv2.imread(path)
cv2.imshow("old_img",img)#第一个参数表示展示出来图片的标题,第二个参数就是展示的图片
cv2.waitkey(0)
new_img=Horizontal(img)
cv2.imshow("new_img",new_img)
cv2.waitkey(0)
3.旋转图片
#旋转,第一个参数是旋转角度(默认旋转15度),第二个参数表示旋转过程中还可以放大缩小
def Rotate(image,angle=15,scale=0.9):
w=image.shape[1]
h=image.shape[0]
M=cv2.getRotationMatrix2D((w/2,h/2),angle,scale)
image=cv2.warpAffine(image,M,(w,h))
return image
path="test/1.jpg"
img=cv2.imread(path)
cv2.imshow("old_img",img)#第一个参数表示展示出来图片的标题,第二个参数就是展示的图片
cv2.waitkey(0)
new_img=Rotate(img,90,1)
cv2.imshow("new_img",new_img)
cv2.waitkey(0)
4.调节明暗度
#变暗
def Darker(image,percetage=0.9):
image_copy=image.copy()
w=image.shape[1]
h=image.shape[0]
for xi in range(0,w):
for xj in range(0,h):
image_copy[xj,xi,0]=int(image[xj,xi,0]*percetage)
image_copy[xj,xi,1]=int(image[xj,xi,1]*percetage)
image_copy[xj,xi,2]=int(image[xj,xi,2]*percetage)
return image_copy
#垂直翻转
def Vertical(image):
return cv2.flip(image,0,dst=None)
path="test/1.jpg"
img=cv2.imread(path)
cv2.imshow("old_img",img)#第一个参数表示展示出来图片的标题,第二个参数就是展示的图片
cv2.waitkey(0)
new_img=Darker(img)
cv2.imshow("new_img",new_img)
cv2.waitkey(0)
#变亮
def Brighter(image,percetage=1.1):
image_copy=image.copy()
w=image.shape[1]
h=image.shape[0]
for xi in range(0,w):
for xj in range(0,h):
image_copy[xj,xi,0]=np.clip(int(image[xj,xi,0]*percetage),a_max=255,a_min=0)
image_copy[xj,xi,1]=np.clip(int(image[xj,xi,1]*percetage),a_max=255,a_min=0)
image_copy[xj,xi,2]=np.clip(int(image[xj,xi,2]*percetage),a_max=255,a_min=0)
return image_copy
#垂直翻转
def Vertical(image):
return cv2.flip(image,0,dst=None)
path="test/1.jpg"
img=cv2.imread(path)
cv2.imshow("old_img",img)#第一个参数表示展示出来图片的标题,第二个参数就是展示的图片
cv2.waitkey(0)
new_img=Brighter(img)
cv2.imshow("new_img",new_img)
cv2.waitkey(0)
进行数据增强之后,还要将图片保存下来:
img_path="test"
save_path=img_path
txts=os.listdir(img_path)
for txt in txts:
image_path=os.path.join(img_path+txt)
image=cv2.imread(image_path)
image_scale=Scale(image,1.5)
new_image_path=os.path.join(save_path,txt.replace(".jpg","_scale.jpg"))
cv2.imwrite(new_image_path,image_scale)
image_rotate=Rotate(image,90,1)
new_image_path=os.path.join(save_path,txt.replace(".jpg","_rotate.jpg"))
cv2.imwrite(new_image_path,image_rotate)
..........