栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python对图片进行旋转_python旋转图片?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python对图片进行旋转_python旋转图片?

Python图像翻转[附批量操作函数]

垂直方向翻转(上下翻转)

# 方式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

"""
:
'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')
Result: 单图:

批量:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号