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

python图像处理工具pillow opencv等练习1 旋转

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

python图像处理工具pillow opencv等练习1 旋转

对如下图片旋转

image.png

将上面图片逆时针旋转45度,90度,要求图片内容完整。

pillow
#!/usr/bin/env python3# -*- coding: utf-8 -*-# https://china-testing.github.io/pil1.html# https://github.com/china-testing/python-api-tesing/blob/master/practices/pillow/rotate.py# 项目实战讨论QQ群630011153 144081101# CreateDate: 2018-12-26from PIL import Image

im = Image.open("qun.jpg")
print(im.size)
im.show()


im2 = im.rotate(45)
print(im2.size)
im2.show()
im2.save("test1.jpg")

im3 = im.rotate(45, expand=True)
print(im3.size)
im3.show()
im3.save("test2.jpg")

执行结果:

(489, 594)
(489, 594)
(767, 766)

test1.jpg

test2.jpg

注意点:pillow在没有设置expand=True的情况,旋转可能会丢失部分内容。设置expand=True的情况下,则可能增大图片像素。

90度的旋转和45的类似。具体参考代码 https://github.com/china-testing/python-api-tesing/blob/master/practices/pillow/rotate.py。

90度旋转在没有设置expand=True的情况下,图片也是有丢失的。

test3.jpg

另外:transpose(Image.ROTATE_90)和im.rotate(90, expand=True)的效果实际是相同。

参考资料:

https://www.toutiao.com/i6637827317458567687/

https://china-testing.github.io/python3_lib_pil.html

旋转图片更多pillow练习

把/home/andrew/code/tmp_photos2的jpg图片旋转270度,放在/home/andrew/code/tmp_photos3

参考资料:python图像处理库

要求实现的命令行界面如下:

#!sh

$ python3 rotate.py -h
usage: rotate.py [-h] [-t TYPE] [-a ANGLE] [--version] src dst

功能:旋转图片

示例: $ python3 rotate.py /home/andrew/code/tmp_photos2 /home/andrew/code/tmp_photos3 -a 270把/home/andrew/code/tmp_photos2的jpg图片旋转270度,放在/home/andrew/code/tmp_photos3 

positional arguments:
  src         源目录
  dst         目的目录

optional arguments:
  -h, --help  show this help message and exit
  -t TYPE     文件扩展名, 默认为jpg
  -a ANGLE    旋转角度,默认为90度,方向都为逆时针。
  --version   show program's version number and exit

旋转前:

photo.jpg

旋转后

photo.jpg

需求来源: 用户拍的图片人脸未必是头在上,下巴在下面,但是人脸识别的时扶正的识别效果比较好,为此...

参考代码:

#!pythonimport globimport os 
import argparsefrom PIL import Imageimport photosimport data_common

description = '''

功能:旋转图片

示例: $ python3 rotate.py /home/andrew/code/tmp_photos2 /home/andrew/code/tmp_photos3 -a 270
'''parser = argparse.ArgumentParser(description=description, 
                                 formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('src', action="store", help=u'源目录')
parser.add_argument('dst', action="store", help=u'目的目录')
parser.add_argument('-t', action="store", dest="type", default="jpg", 
                    help=u'文件扩展名, 默认为jpg')
parser.add_argument('-a', action="store", dest="angle", default=90, type=int,
                    help=u'旋转角度,默认为90度,方向都为逆时针。')
parser.add_argument('--version', action='version',
                    version='%(prog)s 1.0 Rongzhong xu 2018 04 26')
options = parser.parse_args()

data_common.check_directory(options.dst)
files = data_common.find_files_by_type(options.src, filetype=options.type)
photos.rotate(files, options.dst, options.angle)



作者:python作业AI毕业设计
链接:https://www.jianshu.com/p/fc2a18c9c1e9


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

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

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