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包的使用相关推荐

  1. python Shapely包使用,实现多边形iou

    python Shapely 使用指南 刚从学习了Shapely包使用,怕忘记,在这里记录一下. 阅读目录 1.引入包 from shapely.geometry import Point from ...

  2. shapely包导入问题

    shapely,OSError: [WinError 126] 找不到指定的模块 最近在使用PaddleOCR时,win10下安装好paddle框架和相关依赖后,控制台下执行测试程序报如下错误: &q ...

  3. shapely包导入时报错

    OSError: [WinError 126] 找不到指定的模块 在pip install shapely后运行仍然报错,原因在于shapely/DLLs目录下的两个dll文件并未加入到python的 ...

  4. matlab有shapely包吗,python binary lib on win/各种python库的二进制包

    虽然很不愿意在windows上折腾python,但有时linux不在身边的时候还得在windows上写代码.很久之前找到这个地址,后来忘了,今天搜了半天才把它找到,所以记录一下. 以上页面提供各种编译 ...

  5. Shapely 扩展包功能札记

    Shapely 扩展包功能札记 shapely 是python 中开源的空间几何对象库,支持 Point(点),LineString(线),Polygon(面) 等几何对象及相关空间操作. Shape ...

  6. python绘制四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例

    在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...

  7. Python地理数据处理库shapely支持函数总结

    Shapely是一个Python库,用于操作和分析笛卡尔坐标系中的几何对象. 本文通过部分示例介绍了空间处理库Shape的部分概念与操作函数. 官方文档:https://shapely.readthe ...

  8. python图片截取斜四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例...

    在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...

  9. python中geometry_python shapely.geometry.polygon任意两个四边形的IOU计算实例

    在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...

最新文章

  1. 企业千人千面管理模式_零售企业该如何打造“千人千面”的差异化营销?
  2. gradle 指定springcloud 版本_Gradle初探
  3. java父进程获取子进程异常_如何在perl的父进程中获取死亡的子进程的PID?
  4. 第三次学JAVA再学不好就吃翔(part21)--局部变量与成员变量
  5. vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件
  6. c3p0-config.xml文件简单说明与备忘
  7. python学习list_python学习之list
  8. 二级java考什么_计算机二级Java考试资料!
  9. 深入理解Linux系统中的用户和组账号
  10. 浅析C++开发工程师的薪资与发展
  11. C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项...
  12. 【黑金动力社区】【bf531 体验板教程】第六章 可编程标志口(八)
  13. sql统计表中各类型金额_各类型模具设计中“脱料结构”种类、使用范围揭秘,值得收藏...
  14. 词法分析——词法分析器的作用
  15. Java二叉树数据结构原理
  16. windows环境下_Django3.2+django_apscheduler0.6实现异步定时计划任务
  17. 生物信息_odds_ratios、Likelihood_Ratios、发病率、frequency
  18. php打开excel文件,PHP读取Excel文件的简单示例
  19. c语言谢旻吕俊张军强答案,吕俊|
  20. C语言中带负数的除法

热门文章

  1. ARM:你从未听说过的英国最成功的科技公司
  2. 网站的工作原理:网络开发新手(或任何人)入门
  3. 图解SM2算法流程——第1章 概述
  4. maya arnold渲染器产品快速灯光渲染模板文件下载
  5. 读《麦田里的守望者》(塞林格)
  6. 全国计算机等级考试-三级信息安全考试知识点(无顺序)
  7. Jquery(一)选择器
  8. jdk安装包解压后如何安装(jdk下载安装)
  9. 【51CTO学院三周年】初识51cto到习惯打开51cto
  10. centos8修改系统语言为中文