对图片数据增强,可以对图片实现:

1. 尺寸放大缩小

2. 旋转(任意角度,如45°,90°,180°,270°)

3. 翻转(水平翻转,垂直翻转)

4. 明亮度改变(变亮,变暗)

5. 像素平移(往一个方向平移像素,空出部分自动填补黑色)

6. 添加噪声(椒盐噪声,高斯噪声)

目录

一、放大缩小

二、水平/垂直翻转

三、旋转

四、明亮度

五、平移

六、添加噪声

七、模糊

八、对一张图片进行单种变换

九、对一张图片进行多种变换

十、对数据集中所有类别的图片进行变换


数据集文件夹名为data4,第一个分类daisy中只有五张图片。

一、放大缩小

import os
import numpy as np
import cv2# 放大缩小
def Scale(image, scale):return cv2.resize(image,None,fx=scale,fy=scale,interpolation=cv2.INTER_LINEAR)def TestOnePic():test_jpg_loc = r"data4/daisy/1.jpg"test_jpg = cv2.imread(test_jpg_loc)cv2.imshow("ShowImg", test_jpg)img1 = Scale(test_jpg,0.5)cv2.imshow("Img1", img1)img2 = Scale(test_jpg,2)cv2.imshow("Img2", img2)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":TestOnePic()

二、水平/垂直翻转

import os
import numpy as np
import cv2# flipcode=1为水平翻转,flipcode=0为垂直翻转
def Horizontal(image):return cv2.flip(image,1,dst=None)def Vertical(image):return cv2.flip(image,0,dst=None)def TestOnePic():test_jpg_loc = r"data4/daisy/1.jpg"test_jpg = cv2.imread(test_jpg_loc)cv2.imshow("ShowImg", test_jpg)img1 = Horizontal(test_jpg)cv2.imshow("Img1", img1)img2 = Vertical(test_jpg)cv2.imshow("Img2", img2)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":TestOnePic()

三、旋转

image.shape[0], 图片垂直尺寸

image.shape[1], 图片水平尺寸

image.shape[2], 图片通道数

cv2.getRotationMatrix2D()经常被使用到的参数有三个:

  • 旋转中心
  • 旋转角度
  • 旋转后的缩放比例

利用opencv实现仿射变换一般会涉及到warpAffine和getRotationMatrix2D两个函数,其中warpAffine可以实现一些简单的重映射,而getRotationMatrix2D可以获得旋转矩阵。cv2.warpAffine()主要有以下参数:

  • src: 输入图像
  • dst: 输出图像,尺寸由dsize指定,图像类型与原图像一致
  • M: 2X3的变换矩阵
  • dsize: 指定图像输出尺寸
  • flags: 插值算法标识符,有默认值INTER_LINEAR,如果插值算法WARP_INVERSE_MAP, warpAffine函数使用如下矩阵进行图像转换
import os
import numpy as np
import cv2#旋转
def Rotate(image,angle,scale):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 imagedef TestOnePic():test_jpg_loc = r"data4/daisy/1.jpg"test_jpg = cv2.imread(test_jpg_loc)cv2.imshow("ShowImg", test_jpg)img1 = Rotate(test_jpg,45,2)cv2.imshow("Img1", img1)img2 = Rotate(test_jpg,90,1)cv2.imshow("Img2", img2)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":TestOnePic()

旋转后如果图片大小不够大的话会填充黑色。

四、明亮度

把图片变亮或者变暗。

import os
import numpy as np
import cv2'''
明亮度
'''
# 变暗
def Darker(image,percetage):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get darkerfor 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 Brighter(image, percetage):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get brighterfor 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_copydef TestOnePic():test_jpg_loc = r"data4/daisy/1.jpg"test_jpg = cv2.imread(test_jpg_loc)cv2.imshow("ShowImg", test_jpg)img1 = Darker(test_jpg,0.9)cv2.imshow("Img1", img1)img2 = Brighter(test_jpg,1.1)cv2.imshow("Img2", img2)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":TestOnePic()

五、平移

import os
import numpy as np
import cv2def Move(img,x,y):img_info=img.shapeheight=img_info[0]width=img_info[1]mat_translation=np.float32([[1,0,x],[0,1,y]])  #变换矩阵:设置平移变换所需的计算矩阵:2行3列#[[1,0,20],[0,1,50]]   表示平移变换:其中x表示水平方向上的平移距离,y表示竖直方向上的平移距离。dst=cv2.warpAffine(img,mat_translation,(width,height))  #变换函数return dstdef TestOnePic():test_jpg_loc = r"data4/daisy/1.jpg"test_jpg = cv2.imread(test_jpg_loc)cv2.imshow("ShowImg", test_jpg)img1 = Move(test_jpg,10,20)cv2.imshow("Img1", img1)img2 = Move(test_jpg,-20,-10)cv2.imshow("Img2", img2)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":TestOnePic()

六、添加噪声

import os
import numpy as np
import cv2'''
增加噪声
'''
# 椒盐噪声
def SaltAndPepper(src,percetage):SP_NoiseImg=src.copy()SP_NoiseNum=int(percetage*src.shape[0]*src.shape[1])for i in range(SP_NoiseNum):randR=np.random.randint(0,src.shape[0]-1)randG=np.random.randint(0,src.shape[1]-1)randB=np.random.randint(0,3)if np.random.randint(0,1)==0:SP_NoiseImg[randR,randG,randB]=0else:SP_NoiseImg[randR,randG,randB]=255return SP_NoiseImg# 高斯噪声
def GaussianNoise(image,percetage):G_Noiseimg = image.copy()w = image.shape[1]h = image.shape[0]G_NoiseNum=int(percetage*image.shape[0]*image.shape[1])for i in range(G_NoiseNum):temp_x = np.random.randint(0,h)temp_y = np.random.randint(0,w)G_Noiseimg[temp_x][temp_y][np.random.randint(3)] = np.random.randn(1)[0]return G_Noiseimgdef TestOnePic():test_jpg_loc = r"data4/daisy/1.jpg"test_jpg = cv2.imread(test_jpg_loc)cv2.imshow("ShowImg", test_jpg)img1 = SaltAndPepper(test_jpg,0.05)cv2.imshow("Img1", img1)img2 = GaussianNoise(test_jpg,0.05)cv2.imshow("Img2", img2)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":TestOnePic()

七、模糊

高斯模糊:

cv2.GaussianBlur(图像,卷积核,标准差)
import os
import numpy as np
import cv2def Blur(img):blur = cv2.GaussianBlur(img, (7, 7), 1.5)# #      cv2.GaussianBlur(图像,卷积核,标准差)return blurdef TestOnePic():test_jpg_loc = r"data4/daisy/1.jpg"test_jpg = cv2.imread(test_jpg_loc)cv2.imshow("ShowImg", test_jpg)img1 = Blur(test_jpg)cv2.imshow("Img1", img1)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":TestOnePic()

八、对一张图片进行单种变换

'''这是图片数据增强的代码,可以对图片实现:1. 尺寸放大缩小2. 旋转(任意角度,如45°,90°,180°,270°)3. 翻转(水平翻转,垂直翻转)4. 明亮度改变(变亮,变暗)5. 像素平移(往一个方向平移像素,空出部分自动填补黑色)6. 添加噪声(椒盐噪声,高斯噪声)
'''
import os
import numpy as np
import cv2'''
缩放
'''
# 放大缩小
def Scale(image, scale):return cv2.resize(image,None,fx=scale,fy=scale,interpolation=cv2.INTER_LINEAR)'''
翻转
'''
# 水平翻转
def Horizontal(image):return cv2.flip(image,1,dst=None) #水平镜像# 垂直翻转
def Vertical(image):return cv2.flip(image,0,dst=None) #垂直镜像# 旋转,R可控制图片放大缩小
def Rotate(image, angle=15, scale=0.9):w = image.shape[1]h = image.shape[0]#rotate matrixM = cv2.getRotationMatrix2D((w/2,h/2), angle, scale)#rotateimage = cv2.warpAffine(image,M,(w,h))return image'''
明亮度
'''
# 变暗
def Darker(image,percetage=0.9):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get darkerfor 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 Brighter(image, percetage=1.1):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get brighterfor 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 Move(img,x,y):img_info=img.shapeheight=img_info[0]width=img_info[1]mat_translation=np.float32([[1,0,x],[0,1,y]])  #变换矩阵:设置平移变换所需的计算矩阵:2行3列#[[1,0,20],[0,1,50]]   表示平移变换:其中x表示水平方向上的平移距离,y表示竖直方向上的平移距离。dst=cv2.warpAffine(img,mat_translation,(width,height))  #变换函数return dst'''
增加噪声
'''
# 椒盐噪声
def SaltAndPepper(src,percetage=0.05):SP_NoiseImg=src.copy()SP_NoiseNum=int(percetage*src.shape[0]*src.shape[1])for i in range(SP_NoiseNum):randR=np.random.randint(0,src.shape[0]-1)randG=np.random.randint(0,src.shape[1]-1)randB=np.random.randint(0,3)if np.random.randint(0,1)==0:SP_NoiseImg[randR,randG,randB]=0else:SP_NoiseImg[randR,randG,randB]=255return SP_NoiseImg# 高斯噪声
def GaussianNoise(image,percetage=0.05):G_Noiseimg = image.copy()w = image.shape[1]h = image.shape[0]G_NoiseNum=int(percetage*image.shape[0]*image.shape[1])for i in range(G_NoiseNum):temp_x = np.random.randint(0,h)temp_y = np.random.randint(0,w)G_Noiseimg[temp_x][temp_y][np.random.randint(3)] = np.random.randn(1)[0]return G_Noiseimgdef Blur(img):blur = cv2.GaussianBlur(img, (7, 7), 1.5)# #      cv2.GaussianBlur(图像,卷积核,标准差)return blurdef TestOneDir():root_path = "data4/daisy"save_path = root_pathfor a, b, c in os.walk(root_path):for file_i in c:file_i_path = os.path.join(a, file_i)print(file_i_path)img_i = cv2.imread(file_i_path)img_scale = Scale(img_i,1.5)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_scale.jpg"), img_scale)img_horizontal = Horizontal(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_horizontal.jpg"), img_horizontal)img_vertical = Vertical(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_vertical.jpg"), img_vertical)img_rotate = Rotate(img_i,90)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate90.jpg"), img_rotate)img_rotate = Rotate(img_i, 180)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate180.jpg"), img_rotate)img_rotate = Rotate(img_i, 270)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate270.jpg"), img_rotate)img_move = Move(img_i,15,15)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_move.jpg"), img_move)img_darker = Darker(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_darker.jpg"), img_darker)img_brighter = Brighter(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_brighter.jpg"), img_brighter)img_blur = Blur(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_blur.jpg"), img_blur)img_salt = SaltAndPepper(img_i,0.05)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_salt.jpg"), img_salt)if __name__ == "__main__":TestOneDir()# root_path = "data4/"# AllData(root_path)

可以看到daisy中由原来的5张图变为了60张,每张图都经过了11种变换。

九、对一张图片进行多种变换

想要对一张图片进行翻转、平移、模糊等叠加操作,就依次对所需代码进行执行。

1. 一开始我们有五张图片。

2. 先对图片进行scale操作,把其他代码注释掉,现在变为10张图片。


import os
import numpy as np
import cv2'''
缩放
'''
# 放大缩小
def Scale(image, scale):return cv2.resize(image,None,fx=scale,fy=scale,interpolation=cv2.INTER_LINEAR)'''
翻转
'''
# 水平翻转
def Horizontal(image):return cv2.flip(image,1,dst=None) #水平镜像# 垂直翻转
def Vertical(image):return cv2.flip(image,0,dst=None) #垂直镜像# 旋转,R可控制图片放大缩小
def Rotate(image, angle=15, scale=0.9):w = image.shape[1]h = image.shape[0]#rotate matrixM = cv2.getRotationMatrix2D((w/2,h/2), angle, scale)#rotateimage = cv2.warpAffine(image,M,(w,h))return image'''
明亮度
'''
# 变暗
def Darker(image,percetage=0.9):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get darkerfor 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 Brighter(image, percetage=1.1):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get brighterfor 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 Move(img,x,y):img_info=img.shapeheight=img_info[0]width=img_info[1]mat_translation=np.float32([[1,0,x],[0,1,y]])  #变换矩阵:设置平移变换所需的计算矩阵:2行3列#[[1,0,20],[0,1,50]]   表示平移变换:其中x表示水平方向上的平移距离,y表示竖直方向上的平移距离。dst=cv2.warpAffine(img,mat_translation,(width,height))  #变换函数return dst'''
增加噪声
'''
# 椒盐噪声
def SaltAndPepper(src,percetage=0.05):SP_NoiseImg=src.copy()SP_NoiseNum=int(percetage*src.shape[0]*src.shape[1])for i in range(SP_NoiseNum):randR=np.random.randint(0,src.shape[0]-1)randG=np.random.randint(0,src.shape[1]-1)randB=np.random.randint(0,3)if np.random.randint(0,1)==0:SP_NoiseImg[randR,randG,randB]=0else:SP_NoiseImg[randR,randG,randB]=255return SP_NoiseImg# 高斯噪声
def GaussianNoise(image,percetage=0.05):G_Noiseimg = image.copy()w = image.shape[1]h = image.shape[0]G_NoiseNum=int(percetage*image.shape[0]*image.shape[1])for i in range(G_NoiseNum):temp_x = np.random.randint(0,h)temp_y = np.random.randint(0,w)G_Noiseimg[temp_x][temp_y][np.random.randint(3)] = np.random.randn(1)[0]return G_Noiseimgdef Blur(img):blur = cv2.GaussianBlur(img, (7, 7), 1.5)# #      cv2.GaussianBlur(图像,卷积核,标准差)return blurdef TestOneDir():root_path = "data4/daisy"save_path = root_pathfor a, b, c in os.walk(root_path):for file_i in c:file_i_path = os.path.join(a, file_i)print(file_i_path)img_i = cv2.imread(file_i_path)img_scale = Scale(img_i,1.5)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_scale.jpg"), img_scale)
#
#             img_horizontal = Horizontal(img_i)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_horizontal.jpg"), img_horizontal)
#
#             img_vertical = Vertical(img_i)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_vertical.jpg"), img_vertical)
#
#             img_rotate = Rotate(img_i,90)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate90.jpg"), img_rotate)
#
#             img_rotate = Rotate(img_i, 180)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate180.jpg"), img_rotate)
#
#             img_rotate = Rotate(img_i, 270)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate270.jpg"), img_rotate)
#
#             img_move = Move(img_i,15,15)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_move.jpg"), img_move)
#
#             img_darker = Darker(img_i)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_darker.jpg"), img_darker)
#
#             img_brighter = Brighter(img_i)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_brighter.jpg"), img_brighter)
#
#             img_blur = Blur(img_i)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_blur.jpg"), img_blur)
#
#             img_salt = SaltAndPepper(img_i,0.05)
#             cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_salt.jpg"), img_salt)
# #if __name__ == "__main__":TestOneDir()# root_path = "data4/"# AllData(root_path)

十、对数据集中所有类别的图片进行变换

'''这是图片数据增强的代码,可以对图片实现:1. 尺寸放大缩小2. 旋转(任意角度,如45°,90°,180°,270°)3. 翻转(水平翻转,垂直翻转)4. 明亮度改变(变亮,变暗)5. 像素平移(往一个方向平移像素,空出部分自动填补黑色)6. 添加噪声(椒盐噪声,高斯噪声)
'''
import os
import numpy as np
import cv2# envpath = '/home/zhaolei/anaconda3/envs/maweiyi/lib/python3.8/site-packages/cv2/qt/plugins/platforms'
# os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = envpath'''
缩放
'''
# 放大缩小
def Scale(image, scale):return cv2.resize(image,None,fx=scale,fy=scale,interpolation=cv2.INTER_LINEAR)'''
翻转
'''
# 水平翻转
def Horizontal(image):return cv2.flip(image,1,dst=None) #水平镜像# 垂直翻转
def Vertical(image):return cv2.flip(image,0,dst=None) #垂直镜像# 旋转,R可控制图片放大缩小
def Rotate(image, angle=15, scale=0.9):w = image.shape[1]h = image.shape[0]#rotate matrixM = cv2.getRotationMatrix2D((w/2,h/2), angle, scale)#rotateimage = cv2.warpAffine(image,M,(w,h))return image'''
明亮度
'''
# 变暗
def Darker(image,percetage=0.9):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get darkerfor 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 Brighter(image, percetage=1.1):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get brighterfor 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 Move(img,x,y):img_info=img.shapeheight=img_info[0]width=img_info[1]mat_translation=np.float32([[1,0,x],[0,1,y]])  #变换矩阵:设置平移变换所需的计算矩阵:2行3列#[[1,0,20],[0,1,50]]   表示平移变换:其中x表示水平方向上的平移距离,y表示竖直方向上的平移距离。dst=cv2.warpAffine(img,mat_translation,(width,height))  #变换函数return dst'''
增加噪声
'''
# 椒盐噪声
def SaltAndPepper(src,percetage=0.05):SP_NoiseImg=src.copy()SP_NoiseNum=int(percetage*src.shape[0]*src.shape[1])for i in range(SP_NoiseNum):randR=np.random.randint(0,src.shape[0]-1)randG=np.random.randint(0,src.shape[1]-1)randB=np.random.randint(0,3)if np.random.randint(0,1)==0:SP_NoiseImg[randR,randG,randB]=0else:SP_NoiseImg[randR,randG,randB]=255return SP_NoiseImg# 高斯噪声
def GaussianNoise(image,percetage=0.05):G_Noiseimg = image.copy()w = image.shape[1]h = image.shape[0]G_NoiseNum=int(percetage*image.shape[0]*image.shape[1])for i in range(G_NoiseNum):temp_x = np.random.randint(0,h)temp_y = np.random.randint(0,w)G_Noiseimg[temp_x][temp_y][np.random.randint(3)] = np.random.randn(1)[0]return G_Noiseimgdef Blur(img):blur = cv2.GaussianBlur(img, (7, 7), 1.5)# #      cv2.GaussianBlur(图像,卷积核,标准差)return blurdef AllData(rootpath):root_path = "data4/"save_loc = root_pathfor a,b,c in os.walk(root_path):for file_i in c:file_i_path = os.path.join(a,file_i)print(file_i_path)split = os.path.split(file_i_path)dir_loc = os.path.split(split[0])[1]save_path = os.path.join(save_loc,dir_loc)img_i = cv2.imread(file_i_path)img_scale = Scale(img_i,1.5)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_scale.jpg"), img_scale)img_horizontal = Horizontal(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_horizontal.jpg"), img_horizontal)img_vertical = Vertical(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_vertical.jpg"), img_vertical)img_rotate = Rotate(img_i, 90)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate90.jpg"), img_rotate)img_rotate = Rotate(img_i, 180)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate180.jpg"), img_rotate)img_rotate = Rotate(img_i, 270)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_rotate270.jpg"), img_rotate)img_move = Move(img_i, 15, 15)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_move.jpg"), img_move)img_darker = Darker(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_darker.jpg"), img_darker)img_brighter = Brighter(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_brighter.jpg"), img_brighter)img_blur = Blur(img_i)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_blur.jpg"), img_blur)img_salt = SaltAndPepper(img_i, 0.05)cv2.imwrite(os.path.join(save_path, file_i[:-4] + "_salt.jpg"), img_salt)if __name__ == "__main__":root_path = "data4/"AllData(root_path)

pytorch进阶学习(三):在数据集数量不够时如何进行数据增强相关推荐

  1. PyTorch框架学习三——张量操作

    PyTorch框架学习三--张量操作 一.拼接 1.torch.cat() 2.torch.stack() 二.切分 1.torch.chunk() 2.torch.split() 三.索引 1.to ...

  2. pytorch 入门学习加载数据集-8

    pytorch 入门学习加载数据集 import torch import numpy as np import torchvision import numpy as np from torch.u ...

  3. PyTorch 进阶学习(二)————STN:空间变换网络(Spatial Transformer Network)

    文章目录 数据集的加载 空间变换网络的介绍 定义网络 训练和测试模型 可视化 STN 结果 官方文档地址: https://pytorch.org/tutorials/intermediate/spa ...

  4. pytorch构造可迭代的DataLoader,动态流式读取数据源,不担心内存炸裂(pytorch Data学习三)

    构造迭代读取的Dataloader,首先需要可迭代的DataSet,这一部分详细请参考:pytorch构造可迭代的Dataset--IterableDataset(pytorch Data学习二),下 ...

  5. Pytorch基础(三)数据集加载及预处理

    目录 下载数据集及显示样本 数据集类 建立数据集类及显示部分样本 数据变换 后记 python提供了许多工具简化数据加载,使代码更具可读性.经常用到的包有scikit-image.pandas等,本文 ...

  6. pytorch MNIST 手写数字识别 + 使用自己的测试集 + 数据增强后再训练

    文章目录 1. MNIST 手写数字识别 2. 聚焦数据集扩充后的模型训练 3. pytorch 手写数字识别基本实现 3.1完整代码及 MNIST 测试集测试结果 3.1.1代码 3.1.2 MNI ...

  7. Python深度学习-Data Augmentation:使用Augly库进行图片数据增强

    Augly AugLy 是一个数据增强库,可以帮助评估和提高模型的稳健性.该库支持四种模式(音频.视频.图像和文本),并且包含 100 多种执行数据增强的方法.如果正在从事使用音频.视频.图像或文本数 ...

  8. Activiti7.0进阶学习(三):assignee的值用UEL的POJO实现

    背景 POJO, 这个概念其实来自Spring中,叫做增强型Java对象.因为Spring是非侵入式编程模式,我们开发者自定义的实体,既可以变成POJO类型的实体服务于Spring框架,这个变成的PO ...

  9. 深度学习100例 | 第34天:如何进行数据增强?

    大家好,我是K同学啊! 在本教程中,你将学会如何进行数据增强,并通过数据增强用少量数据达到非常非常棒的识别准确率. 我将展示两种数据增强方式,以及如何自定义数据增强方式并将其放到我们代码当中,两种数据 ...

最新文章

  1. windows 常用命令不完全总结
  2. android鼠标dpi,对Android 中 px、DPI、dp(dip)、density的理解
  3. 迁移 Express 到函数计算
  4. tplink控制上网设备_上网总有人抢网速如何解决 上网卡慢解决方法【详解】
  5. [渝粤教育] 江苏食品药品职业技术学院 食品生物化学 参考 资料
  6. [leetcode] 117. 填充同一层的兄弟节点 II
  7. sql注入python编程_Python编写SQL注入工具(2)
  8. 3t硬盘 xp_如何在Windows XP SP3 32位系统下识别3T容量GPT格式硬盘
  9. 刷屏的北京雾霾,2018 年北上广深空气质量分析
  10. MATLAB-图像分割
  11. 微信公众平台接入token验证失败php,PHP开发公众号token验证失败是什么意思?其中一个原因 筋斗云网络...
  12. 2018年总——不忘初心
  13. 几款国外主流虚拟主机控制面板介绍
  14. AFX_PMSG数据结构
  15. CSAPP 第三版 第十章 家庭作业and so on
  16. mysql导入SQL表变少了
  17. fragment重叠问题
  18. 本地python版GEE安装及配置步骤(jupyter lab)
  19. DEEPIN 安装软件的方法
  20. 《深度学习入门》(一)

热门文章

  1. 微信扫码支付实时通知用户订单支付状态
  2. redash重置密码BUG解决
  3. 追索权 Eclipse + NDK error: stray #39;\24#39; in program
  4. java逍遥游记 下载_Hibernate逍遥游记 孙卫琴著 PDF下载
  5. 获取postgres数据库所有表名
  6. Stata:描述统计结果导出
  7. 1000左右的蓝牙耳机哪款好?分享四款还不错的蓝牙耳机
  8. DHCP server的设置
  9. 如何解决2.4G wifi和蓝牙冲突的问题
  10. Mybatis -study