python opencv图像处理教程 github_python图像处理工具pillow opencv等练习1 旋转
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 旋转相关推荐
- 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...
- 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...
- 【OpenCV入门教程之七】 玩转OpenCV源代码:生成OpenCV工程解决方案与OpenCV源码编译
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21974023 作者:毛星云(浅墨) ...
- python图像处理教程,【图像处理】使用OpenCV+Python进行图像处理入门教程(二)...
这篇随笔介绍使用OpenCV进行图像处理的第二章 图像的运算,让我们踏上继续回顾OpenCV进行图像处理的奇妙之旅,不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 2 图像的运算 复杂的 ...
- python测试开发教程_python3测试工具开发快速入门教程
现有的优秀python教程大多来自国外,但是翻译过来文章,有些丧失了原意.且现有的python3教程,很少有结合项目能快速上手.为此我们退出为零基础的初学者提供python入门教程(资深python使 ...
- 【OpenCV入门教程之二】 一览众山小 OpenCV 2 4 8 or OpenCV 2 4 9组件结构全解析
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/19925819 作者:毛星 ...
- 80个python项目下载_80个Python经典资料(教程+源码+工具)汇总——下载目录
小弟根据资料的热度和好评收集了80个Python资料,分享给Python开发的同学.内容包括1个Python专题.66个学习资料.7套Python源码和6个相关软件.附件较多,无法一一分享,只能为大家 ...
- 【转】【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅 ...
最新文章
- 张亚勤、韦乐平等综述论文:通信人工智能的下一个十年
- mcgs组态软件中字体如果从左到右变化_昆仑通态专题(十一):MCGS嵌入式组态软件的脚本程序...
- 【Tools】git提示“warning: LF will be replaced by CRLF”的解决办法
- ftp上传当天文件的方法_2种windows到linux上传文件的方法
- java虚拟路由器_Java实现模拟路由功能
- Azure DevOps Server CI - 自搭跨平台容器代理Agents
- 动态规划--图像压缩
- requirejs页面刷新失效js报错问题解决方案
- arduino neo 定位不可用_arduino霹雳七彩灯
- linux mysql 文件夹权限_Linux 中文件和文件夹获取 MySQL 权限(SELinux)
- ip68能达到什么程度防水_电子主控电路板使用什么样的胶水可以达到防水效果?...
- 知更鸟begin主题常见问题
- 2020年下半年信息系统项目管理师综合知识真题试题解析
- MS08067红队攻防第三期 今晚7点 不见不散~
- 电脑没有声音提示“外设似乎没有插上”怎么办
- 在安卓中实现Zigbee串口设备采集模块
- 铁死亡(Ferroptosis )最新研究进展(2022年)
- matlab:导入txt数据
- linux中as命令,Linux as 命令 command not found as 命令详解 as 命令未找到 as 命令安装 - CommandNotFound ⚡️ 坑否...
- 用计算机模拟股票大盘,股票模拟盘操作与实盘不同之处有哪些