参考连接 https://www.jianshu.com/p/f3c73fc54625
代码实现

import mathfrom PIL import Image, ImageDrawclass Rotate(object):def __init__(self, image: Image.Image, coordinate):self.image = image.convert('RGB')self.coordinate = coordinateself.xy = [tuple(self.coordinate[k]) for k in ['left_top', 'right_top', 'right_bottom', 'left_bottom']]self._mask = Noneself.image.putalpha(self.mask)@propertydef mask(self):if not self._mask:mask = Image.new('L', self.image.size, 0)draw = ImageDraw.Draw(mask, 'L')draw.polygon(self.xy, fill=255)self._mask = maskreturn self._maskdef run(self):image = self.rotation_angle()box = image.getbbox()return image.crop(box)def rotation_angle(self):x1, y1 = self.xy[0]x2, y2 = self.xy[1]angle = self.angle([x1, y1, x2, y2], [0, 0, 10, 0]) * -1return self.image.rotate(angle, expand=True)def angle(self, v1, v2):dx1 = v1[2] - v1[0]dy1 = v1[3] - v1[1]dx2 = v2[2] - v2[0]dy2 = v2[3] - v2[1]angle1 = math.atan2(dy1, dx1)angle1 = int(angle1 * 180 / math.pi)angle2 = math.atan2(dy2, dx2)angle2 = int(angle2 * 180 / math.pi)if angle1 * angle2 >= 0:included_angle = abs(angle1 - angle2)else:included_angle = abs(angle1) + abs(angle2)if included_angle > 180:included_angle = 360 - included_anglereturn included_angleif __name__ == '__main__':image = Image.open('/Downloads/test/01-90_78-181&326_369&395-358&386_193&385_184&338_349&340-0_0_23_25_33_30_9-94-13.jpg')coordinate = {'left_top': [184, 338], 'right_top': [349, 340], 'right_bottom': [358, 386], 'left_bottom': [193, 385]}rotate = Rotate(image, coordinate)rotate.run().convert('RGB').save('./1.jpg')

python 按照四个点的坐标裁剪不规则四边形相关推荐

  1. python3实现cv2+numpy裁剪不规则四边形图片

    python3实现cv2+numpy裁剪不规则四边形图片 功能 效果图![在这里插入图片描述](https://img-blog.csdnimg.cn/a3dd447909db43489050b3b8 ...

  2. 【python】批量按坐标裁剪图片、ImageJ批量修改图片格式

    一.批量按坐标裁剪图片代码 # -- coding: utf-8 -- import cv2 import osdef update(input_img_path, output_img_path): ...

  3. python中内置的四种数值类型为_浅谈python语言四种数值类型

    Python语言支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下.希望对 ...

  4. Python工具之一:九宫格图片极致裁剪

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech Python工具之一:九宫格图片极致裁剪 工具用途 在读到文章(https://blog.uwa4d.com/archive ...

  5. python教程第四版pdf下载-笨办法学python第四版

    笨办法学python第四版是由Zed Shaw所编写的一本书.如果你还是Python新手,那么这是一本非常不错的入门书籍.书本里以习题方式,引导读者慢慢学会了编程. 目录: 习题 0: 准备工作 习题 ...

  6. python教程第四版pdf下载-笨办法学python第四版 电子书(pdf格式)

    笨办法学python第四版是由Zed Shaw所编写的一本书.如果你还是Python新手,那么这是一本非常不错的入门书籍.书本里以习题方式,引导读者慢慢学会了编程. 目录: 习题 0: 准备工作 习题 ...

  7. python教程第四版pdf下载-笨办法学python 第四版 中文pdf高清版

    笨办法学 Python是Zed Shaw 编写的一本Python入门书籍.适合对计算机了解不多,没有学过编程,但对编程感兴趣的朋友学习使用.这本书以习题的方式引导读者一步一步学习编 程,从简单的打印一 ...

  8. Python绘制简单函数曲线(包括坐标范围限制、刻度指定)

    python绘制简单函数曲线,包括坐标范围限制.刻度指定 ################### 二维曲线图 ################## import numpy as np import ...

  9. python学习四(处理数据)

    python学习四(处理数据) head first python中的一个数据处理的例子 有四个U10选手的600米成绩,请取出每个选手跑的最快的3个时间.以下是四位选手的9次成绩 James 2-3 ...

最新文章

  1. ubuntu python设置utf-8
  2. Android中的任务栈
  3. Java 技术之垃圾回收机制
  4. 类如何调用自己的私有成员_如何正确地给自己和团队成员贴标签?|衡量团队管理 20 讲视觉笔记 14...
  5. GIS实战应用案例100篇(一)-GEE主成分分析(含代码)
  6. 2019计算机组成原理及答案,2019计算机组成原理复习题(一)
  7. linux一直显示探测文件,如何在Linux中检测文件访问?
  8. MSP, CMP傻傻分不清楚?一文读懂云管理的春天
  9. 解决maven dependencies xxx not found
  10. 【机器学习】Octave矩阵,向量的表示与基本操作
  11. 在虚拟主机上部署ASP.NET AJAX 1.0 Beta的程序集
  12. Fiddler代理配置
  13. 《UNIXLinux程序设计教程》一1.3 UNIX基本概念
  14. Sdk4J.jar安装到本地maven仓库
  15. uni-app 设备之(加速计,罗盘,陀螺仪)
  16. SpringCloud学习笔记(五)服务发现Discovery
  17. 2022年大数据BI工程师项目实训介绍
  18. 野外监测数据采集项目
  19. Android软键盘弹出和收起的监听
  20. STM32C8T6 学习总结+资料分享

热门文章

  1. Linux进程调度策略的发展和演变--Linux进程的管理与调度(十六)
  2. 加工生产调度(Johnson算法 双机流水作业调度问题)
  3. 餐饮app开发市场前景如何?行业竞争激烈吗?
  4. python输入姓名_在Python中解析人的名字和姓氏
  5. java 微信获取用户地理位置_Java微信公众平台开发之获取地理位置
  6. PMP——第4章 项目整合管理
  7. Hive sql : 查询连续登录天数
  8. pci总线定时协议_PCI总线标准及协议
  9. 线性规划——对偶问题、强弱对偶定理、KKT条件
  10. Java实现XLS和XLSX之间的相互转换