(python)深度学习 数据扩充 图片的水平、垂直以及水平垂直翻转

        深度学习中经常存在数据量不够的情况,所以需要对数据进行扩充,本文使用三种手段扩充数据,分别是图片的水平、垂直、水平垂直翻转。将图像扩充三倍。

import os
import cv2
import shutil
#水平,垂直,水平垂直翻转
def mirror(image,path_out_mirror):
    '''
    水平翻转
    '''
    h_flip= cv2.flip(image,1)
    cv2.imwrite(path_out_mirror,h_flip)
def vertical(image,path_out_vertical):
    '''
    垂直翻转
    '''
    h_flip=cv2.flip(image,0)
    cv2.imwrite(path_out_vertical,h_flip)
def mir_ver(image,path_out_mir_ver):
    '''
    水平垂直翻转
    '''
    h_flip=cv2.flip(image,-1)
    cv2.imwrite(path_out_mir_ver,h_flip)
def main():
    image_path='F:/data3'           #需要扩充的图片路径
    image_out_path = 'F:/data4'     #扩充后图片的存放路径        
    if not os.path.exists(image_out_path):
        os.makedirs(image_out_path)
    list=os.listdir(image_path)
    print(list)
    print('----------------------------')
    print('原始图像路径:'+image_path)
    print('\n')
    print('原始图像的个数:'+len(list))
    print('-----------------------------')
    imageNamelist=['_level.jpg',        #水平
                   '_vertical.jpg',     #垂直
                   '_lev_ver.jpg',      #水平垂直
                   '.jpg']              #原图片           
    for i in range(0,len(list)):
        path = os.path.join(image_path, list[i])      #路径连接
        out_image_name=os.path.splitext(list[i])[0]   #文件名切割
        for j in range(0,len(imageNamelist)):
            path_out=os.path.join(image_out_path,out_image_name,imageNamelist[j])
            image = cv2.imread(path)
            if j==0:
                mirror(image, path_out)
            elif j==1:
                vertical(image, path_out)
            elif j==2:
                mir_ver(image, path_out)
            else:
                shutil.copy(path, path_out)
        print(out_image_name+'success',end='\t')
    print("----------------------------------------")
    print("The data augmention path:" + image_out_path)
    outlist = os.listdir(image_out_path)
    print("The data augmention sizes:" + str(len(outlist)))
    print("----------------------------------------")
    print("Rich sample for:" + str(len(outlist) - len(list)))
if __name__ == '__main__':
    main()






猜你喜欢

转载自blog.csdn.net/MissLemonh/article/details/120641418