shapely包的使用
1. Point,LineStrings
共有的变量和方法
Point
LineStrings
引入包
from shapely.geometry import Point
from shapely.geometry import LineString
共有的变量和方法
object.area
Returns the area (float) of the object.object.bounds
返回对象的(minx,miny,maxx,maxy)元组(float类型)object.length
返回对象的长度object.geom_type
返回对象类型object.distance(other)
返回本对象和另一个对象的距离object.representative_point()
Returns a cheaply computed point that is guaranteed to be within the geometric object.
import math
from shapely.geometry import Point
from shapely.geometry import LineStringpoint = Point(0,0)
point_2 = Point((0,0))
point_3 = Point(point)
print(point.area) # 0
print(point.length) # 0
print(point.coords)
print(list(point.coords))
# <shapely.coords.CoordinateSequence object at 0x7efd31647d30>
# [(0.0, 0.0)]
print(Point(0,0).distance(Point(0,1)))
# 1.0# h*w-h2*w2/line = LineString([(0,0),(1,1),(1,2)])
print(line.area)
# 0.0
print(line.coords)
print(list(line.coords))
# <shapely.coords.CoordinateSequence object at 0x7f41d6c77d68>
# [(0.0, 0.0), (1.0, 1.0), (1.0, 2.0)]print(line.bounds)
# (0.0, 0.0, 1.0, 2.0)
print(line.length)
# 2.414213562373095=sqrt(2)+1
print(math.sqrt(2))
# 1.4142135623730951
print(line.geom_type)
# LineString
2. 多边形
import numpy as np
import shapely
from shapely.geometry import Polygon, MultiPoint # 多边形line1 = [2, 0, 2, 2, 0, 0, 0, 2] # 四边形四个点坐标的一维数组表示,[x,y,x,y....]
a = np.array(line1).reshape(4, 2) # 四边形二维坐标表示
poly1 = Polygon(a).convex_hull
# python四边形对象,会自动计算四个点,最后四个点顺序为: 左下 左上 右上 右下 左下
print(Polygon(a).convex_hull) # 可以打印看看是不是这样子line2 = [1, 1, 4, 1, 4, 4, 1, 4]
b = np.array(line2).reshape(4, 2)
poly2 = Polygon(b).convex_hull
print(poly2.convex_hull)union_poly = np.concatenate((a, b)) # 合并两个box坐标,变为8*2
print(union_poly)
print(MultiPoint(union_poly).convex_hull) # 包含两四边形最小的多边形点
if not poly1.intersects(poly2): # 如果两四边形不相交iou = 0
else:try:inter_area = poly1.intersection(poly2).area # 相交面积print(inter_area)union_area_2 = poly1.area + poly2.area - inter_areaprint('union_area_2', union_area_2) # 12.0union_area = MultiPoint(union_poly).convex_hull.areaprint('union_area', union_area) # 14.0if union_area == 0:iou = 0iou_1 = float(inter_area) / (union_area-inter_area) #错了iou_2 = float(inter_area) / union_areaiou_3=float(inter_area) /(poly1.area+poly2.area-inter_area)print(iou_1, iou_2, iou_3)# 0.07692307692307693 0.07142857142857142 0.08333333333333333# 源码中给出了两种IOU计算方式,第一种计算的是: 交集部分/包含两个四边形最小多边形的面积# 第二种: 交集 / 并集(常见矩形框IOU计算方式)iou = iou_3except shapely.geos.TopologicalError:print('shapely.geos.TopologicalError occured, iou set to 0')iou = 0print(a)
print(iou)
reference:
https://www.cnblogs.com/kaituorensheng/p/5711752.html
shapely包的使用相关推荐
- python Shapely包使用,实现多边形iou
python Shapely 使用指南 刚从学习了Shapely包使用,怕忘记,在这里记录一下. 阅读目录 1.引入包 from shapely.geometry import Point from ...
- shapely包导入问题
shapely,OSError: [WinError 126] 找不到指定的模块 最近在使用PaddleOCR时,win10下安装好paddle框架和相关依赖后,控制台下执行测试程序报如下错误: &q ...
- shapely包导入时报错
OSError: [WinError 126] 找不到指定的模块 在pip install shapely后运行仍然报错,原因在于shapely/DLLs目录下的两个dll文件并未加入到python的 ...
- matlab有shapely包吗,python binary lib on win/各种python库的二进制包
虽然很不愿意在windows上折腾python,但有时linux不在身边的时候还得在windows上写代码.很久之前找到这个地址,后来忘了,今天搜了半天才把它找到,所以记录一下. 以上页面提供各种编译 ...
- Shapely 扩展包功能札记
Shapely 扩展包功能札记 shapely 是python 中开源的空间几何对象库,支持 Point(点),LineString(线),Polygon(面) 等几何对象及相关空间操作. Shape ...
- python绘制四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例
在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...
- Python地理数据处理库shapely支持函数总结
Shapely是一个Python库,用于操作和分析笛卡尔坐标系中的几何对象. 本文通过部分示例介绍了空间处理库Shape的部分概念与操作函数. 官方文档:https://shapely.readthe ...
- python图片截取斜四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例...
在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...
- python中geometry_python shapely.geometry.polygon任意两个四边形的IOU计算实例
在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...
最新文章
- 企业千人千面管理模式_零售企业该如何打造“千人千面”的差异化营销?
- gradle 指定springcloud 版本_Gradle初探
- java父进程获取子进程异常_如何在perl的父进程中获取死亡的子进程的PID?
- 第三次学JAVA再学不好就吃翔(part21)--局部变量与成员变量
- vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件
- c3p0-config.xml文件简单说明与备忘
- python学习list_python学习之list
- 二级java考什么_计算机二级Java考试资料!
- 深入理解Linux系统中的用户和组账号
- 浅析C++开发工程师的薪资与发展
- C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项...
- 【黑金动力社区】【bf531 体验板教程】第六章 可编程标志口(八)
- sql统计表中各类型金额_各类型模具设计中“脱料结构”种类、使用范围揭秘,值得收藏...
- 词法分析——词法分析器的作用
- Java二叉树数据结构原理
- windows环境下_Django3.2+django_apscheduler0.6实现异步定时计划任务
- 生物信息_odds_ratios、Likelihood_Ratios、发病率、frequency
- php打开excel文件,PHP读取Excel文件的简单示例
- c语言谢旻吕俊张军强答案,吕俊|
- C语言中带负数的除法