Published: 三 26 十二月 2018

对如下图片旋转

将上面图片逆时针旋转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-26

from 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)

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

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

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

另外: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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17$ 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

旋转前:

旋转后

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

参考代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31import glob

import os

import argparse

from PIL import Image

import photos

import 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)s1.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)

参考资料

opencv

opencv的旋转比pillow复杂,不过好在有imutils辅助,具体代码参见:

https://github.com/china-testing/python-api-tesing/blob/master/practices/cv/rotate.py

本文如遇格式问题,请访问: https://china-testing.github.io/img_rotate.html

wand库旋转的参考: http://docs.wand-py.org/en/0.4.1/guide/transform.html

参考资料

讨论 qq群144081101 567351477

道家技术-手相手诊看相中医等钉钉群21734177 qq群:391441566 184175668 338228106 看手相、面相、舌相、抽签、体质识别。服务费50元每人次起。请联系钉钉或者微信pythontesting

python opencv图像处理教程 github_python图像处理工具pillow opencv等练习1 旋转相关推荐

  1. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

  2. 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

  3. 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

  4. 【OpenCV入门教程之七】 玩转OpenCV源代码:生成OpenCV工程解决方案与OpenCV源码编译

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21974023 作者:毛星云(浅墨) ...

  5. python图像处理教程,【图像处理】使用OpenCV+Python进行图像处理入门教程(二)...

    这篇随笔介绍使用OpenCV进行图像处理的第二章 图像的运算,让我们踏上继续回顾OpenCV进行图像处理的奇妙之旅,不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 2  图像的运算 复杂的 ...

  6. python测试开发教程_python3测试工具开发快速入门教程

    现有的优秀python教程大多来自国外,但是翻译过来文章,有些丧失了原意.且现有的python3教程,很少有结合项目能快速上手.为此我们退出为零基础的初学者提供python入门教程(资深python使 ...

  7. 【OpenCV入门教程之二】 一览众山小 OpenCV 2 4 8 or OpenCV 2 4 9组件结构全解析

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/19925819 作者:毛星 ...

  8. 80个python项目下载_80个Python经典资料(教程+源码+工具)汇总——下载目录

    小弟根据资料的热度和好评收集了80个Python资料,分享给Python开发的同学.内容包括1个Python专题.66个学习资料.7套Python源码和6个相关软件.附件较多,无法一一分享,只能为大家 ...

  9. 【转】【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅 ...

最新文章

  1. 张亚勤、韦乐平等综述论文:通信人工智能的下一个十年
  2. mcgs组态软件中字体如果从左到右变化_昆仑通态专题(十一):MCGS嵌入式组态软件的脚本程序...
  3. 【Tools】git提示“warning: LF will be replaced by CRLF”的解决办法
  4. ftp上传当天文件的方法_2种windows到linux上传文件的方法
  5. java虚拟路由器_Java实现模拟路由功能
  6. Azure DevOps Server CI - 自搭跨平台容器代理Agents
  7. 动态规划--图像压缩
  8. requirejs页面刷新失效js报错问题解决方案
  9. arduino neo 定位不可用_arduino霹雳七彩灯
  10. linux mysql 文件夹权限_Linux 中文件和文件夹获取 MySQL 权限(SELinux)
  11. ip68能达到什么程度防水_电子主控电路板使用什么样的胶水可以达到防水效果?...
  12. 知更鸟begin主题常见问题
  13. 2020年下半年信息系统项目管理师综合知识真题试题解析
  14. MS08067红队攻防第三期 今晚7点 不见不散~
  15. 电脑没有声音提示“外设似乎没有插上”怎么办
  16. 在安卓中实现Zigbee串口设备采集模块
  17. 铁死亡(Ferroptosis )最新研究进展(2022年)
  18. matlab:导入txt数据
  19. linux中as命令,Linux as 命令 command not found as 命令详解 as 命令未找到 as 命令安装 - CommandNotFound ⚡️ 坑否...
  20. 用计算机模拟股票大盘,股票模拟盘操作与实盘不同之处有哪些

热门文章

  1. 作用域插槽、slot-scope、v-slot指令
  2. php判断三个数为对子,豹子| 简单粗暴方法
  3. python list和tuple
  4. 2019区块链开年局势大好,飞轮效应的商业魔术该怎么玩?
  5. python最小二乘法拟合圆_最小二乘法拟合圆
  6. 内存泄露分析之MAT工具使用
  7. web3py 环境搭建
  8. PostgreSQL 服务启动不了问题
  9. windows 电脑终端查看历史记录命令
  10. python列表嵌套合并成一个列表