垂直方向翻转(上下翻转)
# 方式1,使用opencv自带函数 new_image = cv.flip(original_image, 0) # 方式2,使用数组索引倒序赋值的方式 new_image = original_image[::-1]
水平方向翻转(左右翻转)
# 方式1,使用opencv自带函数 new_image = cv.flip(original_image, 1) # 方式2,使用数组索引倒序赋值的方式 new_image = original_image[:,::-1]
转置(先上下后左右翻转)
# 方式1,使用opencv自带函数 new_image = cv.flip(original_image, 0) # 方式2,使用数组索引倒序赋值的方式 new_image = original_image[::-1] new_image = new_image[:,::-1]分享一个自用函数,可进行图像的单张和批量翻转(包括以上三种操作)
import numpy as np import cv2 as cv import os """Result: 单图: 批量:: 'single':对单个图像进行操作。'folder':对文件夹内所有图像批量操作。 : 'UD':图像上下翻转。'LR':图像左右翻转。'T':图像转置。 ------------------------------------------------------------------ :单个图像的绝对路径。 :文件夹批量操作,文件夹的绝对路径。 :文件夹批量操作,新生成文件存储文件夹的绝对路径。 """ def image_flip(mode1, mode2, singlepath=None, original_path=None, new_path=None): if new_path is not None and os.path.exists(new_path) is False: os.makedirs(new_path) if mode1 == 'folder': for name in os.listdir(original_path): original_image = cv.imread(original_path + '/' + name) savepath = (new_path+'/' + name[:name.index('.')] + '_' + str(mode2) + name[name.index('.'):]) if mode2 == 'UD': new_image = cv.flip(original_image, 0) # original_image[::-1] 上下翻转 cv.imwrite(savepath, new_image) elif mode2 == 'LR': new_image = cv.flip(original_image, 1) # original_image[:, ::-1] 左右翻转 cv.imwrite(savepath, new_image) elif mode2 == 'T': new_image = cv.flip(original_image, -1) # 水平垂直同时翻转 cv.imwrite(savepath, new_image) else: print("mode2可选参数为:n'UD':上下翻转n'LR':左右翻转n'T' :转置n请输入正确参数!!!") break elif mode1 == 'single': original_image = cv.imread(singlepath) savepath = singlepath[:singlepath.index('.')] + str(mode2) + singlepath[singlepath.index('.'):] if mode2 == 'UD': new_image = cv.flip(original_image, 0) # original_image[::-1] 上下翻转 cv.imwrite(savepath, new_image) if mode2 == 'LR': new_image = cv.flip(original_image, 1) # original_image[:, ::-1] 左右翻转 cv.imwrite(savepath, new_image) if mode2 == 'T': new_image = cv.flip(original_image, -1) # 水平垂直同时翻转 cv.imwrite(savepath, new_image) else: print("mode1可选参数为:n'folder':批量处理n'single':处理单张n请输入正确参数!!!") os.rmdir(new_path) image_flip('single', 'T', r'C:........banana_sample.jpg') image_flip('single', 'LR', r'C:........banana_sample.jpg') image_flip('single', 'T', r'C:........banana_sample.jpg') image_flip('folder', 'UD', original_path='E:/../../1', new_path='E:/../../2')



