python点到多边形距离

最简单例子:

负数表示在多边形外,正数代表多边形内。

要求:hull的数据必须是int类型,不能是float类型。

    import numpy as nppoint=(7,7)hull=[[1,1],[1,2],[2,2],[2,1]]dist = cv2.pointPolygonTest(np.array(hull), point, True)print('dist',dist)

缺点:

不能批量计算法,只能一个点一个点的计算。

感谢博客:

使用cv2.pointPolygonTest()和cv2.polylines()的问题-python黑洞网

def gray_res():import cv2import numpy as np# create backgroundimg = np.zeros((400 ,400) ,dtype=np.uint8)# define shapepts = np.array([[18 ,306] ,[50 ,268] ,[79 ,294] ,[165 ,328] ,[253 ,294] ,[281 ,268] ,[313 ,306] ,[281 ,334] ,[270 ,341],[251 ,351] ,[230 ,360] ,[200 ,368] ,[165 ,371] ,[130 ,368] ,[100 ,360] ,[79 ,351] ,[50 ,334],[35 ,323]], np.int32)pts = pts.reshape((-1 ,1 ,2))# draw shapecv2.polylines(img ,[pts] ,True ,(255), 2)# draw point of interestcv2.circle(img ,(52 ,288) ,1 ,(127) ,3)# perform pointPolygonTestdist = cv2.pointPolygonTest(pts, (52 ,288), False)print(dist)# show imagecv2.imshow('test', img)cv2.waitKey()cv2.destroyAllWindows()def color_res():import cv2import numpy as nppoint=(52, 208)# create backgroundimg = np.zeros((400, 400,3), dtype=np.uint8)# define shapepts = np.array([[18, 306], [50, 268], [79, 294], [165, 328], [253, 294], [281, 268], [313, 306], [281, 334], [270, 341],[251, 351], [230, 360], [200, 368], [165, 371], [130, 368], [100, 360], [79, 351], [50, 334], [35, 323]],np.int32)pts = pts.reshape((-1, 1, 2))# draw shapecv2.polylines(img, [pts], True, (0,255,0), 2)# draw point of interestcv2.circle(img, point, 1, (0,0,255), 3)# perform pointPolygonTestdist = cv2.pointPolygonTest(pts, point, True)print(dist)# show imagecv2.imshow('test', img)cv2.waitKey()cv2.destroyAllWindows()if __name__ == '__main__':color_res()

感谢博客:

(Python)从零开始,简单快速学机器仿人视觉Opencv---第十九节:关于轮廓的函数 - 古月居

检测凸缺陷

opencv凸缺陷的基础知识_究极目标的博客-CSDN博客_opencv凸缺陷

凸包与轮廓之间的部分,称为凸缺陷。在opencv中凸缺陷的语法格式为:

convexityDefects =cv2.convexityDefects (contour,convexhull)
import cv2
import numpy as np
img =cv2.imread("contours2.png")#读图gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转化为灰度图像
ret,binary =cv2.threshold(gray,32,255,0)#阈值处理
contours,h =cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)#查找轮廓hull =cv2.convexHull(contours[0],returnPoints=False)#获取凸包
defects =cv2.convexityDefects(contours[0],hull)for i in range(defects.shape[0]):s,e,f,d=defects[i,0]start = tuple(contours[0][s][0])end = tuple(contours[0][e][0])far = tuple(contours[0][f][0])cv2.line(img,start,end,(255,255,0))#线条绘制cv2.circle(img,far,5,(0,255,0))
print(defects)
cv2.imshow("img",img)#展示凸包cv2.waitKey(0)

python点到多边形距离,点到轮廓距离相关推荐

  1. 依据地图上的经纬度坐标计算某个点到多边形各边的距离

    http://www.th2w.com/article/85 依据地图上的经纬度坐标计算某个点到多边形各边的距离 最近公司有一个需求:依据地图上的经纬度坐标计算某个点到多边形各边的距离. 主要原理: ...

  2. 算法 - PNPoly解决点到多边形距离的问题

    最近做了一个算法题[盒马配货]: (题目大意)盒马店的配送范围由一些点组成的多边形确定,给定一个点判断其是否在配送范围内,若在,则此点不需要挪动,打印"no 0":若不在,则给出此 ...

  3. python计算坐标点欧式距离_Python计算一个点到所有点的欧式距离实现方法

    Python计算一个点到所有点的欧式距离实现方法 如下所示: distances = np.sqrt(np.sum(np.asarray(airportPosition - x_vals)**2, a ...

  4. 一个点到多边形顶点距离相同_走进高维空间——所有点之间的距离都相等!奇妙、疯狂、不可思议...

    欢迎来到高维系列的第三部分,在这里我们将探索高维空间中一些奇怪而不可思议的现象.这是走进高维空间系列的第三部分,感兴趣的朋友可以阅读前两个部分,在文章的末尾我会附上链接. 今天我们将探索一种现象,这种 ...

  5. 已知空间一点到另外两点直线的距离

    转自:http://www.cnblogs.com/clarkustb/archive/2008/11/04/1326500.html 已知空间一点到另外两点直线的距离 设空间中的三点为M1,M2,M ...

  6. 关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)...

    在数轴上找一点使得该点到所有其他点的距离之和最小 方法:找到大小为中位数的点,该点就是要求的点(如有两个取之间任意一点都行) 证明: 先看看当只有2个点时的情况: 分类讨论: 如果在A的左边(如 $P ...

  7. 一种点到特定高维平面的距离的优化算法

    一种点到特定高维平面的距离的优化算法 文章目录 一种点到特定高维平面的距离的优化算法 step1 step2 step3 step4 该算法来自于Efficient Projections onto t ...

  8. 【Halcon 计算点到直线和点到直线延长线的距离】

    Halcon 计算点到直线和点到直线延长线的距离 提示:Halcon计算点到直线的距离.(验证精度)点到直线延长线的距离 前言 实际项目进展过程中会应用到,计算直线与直线,点与直线距离计算,偶然发现, ...

  9. 【MATLAB】求点到多边形的最短距离

    文章目录 0.引言 1.原理 2.代码及实用教程 0.引言 \qquad点与多边形的关系无非三种--内部.上.外部.本文定义点在多边形内部距离为负,点在多边形边上距离为0,到多边形外部距离为正. 1. ...

最新文章

  1. Llinux 磁盘配额的搭建和常规问题解答
  2. phpcmsV9 自定义分页函数与调用 - 不影响后台SQL分页
  3. GitHub+Vue自动化构建部署
  4. java中finaljava中this_Java中this,static,final,const用法详解
  5. 在mysql中如何添加函数库_详细讲解如何为MySQL数据库添加新函数
  6. Leetcode46. Permutations全排列
  7. Java编程:马踏棋盘算法(骑士周游问题)
  8. 踩坑日记(一):半夜打DBA电话解决数据库连接超时自动回滚问题
  9. 语义分析的方法简述之文本基本处理
  10. 数字图像处理matlab蔡利梅,数字图像处理:使用MATLAB分析与实现:using MATLAB
  11. Windows Server2012R2文件服务器安装与配置
  12. 几款好看的css表格
  13. postman安装后闪退
  14. 计算机工作记录,电脑上可以记录每日工作内容的办公便签是什么?
  15. 软件测试 - 功能测试(测试理论+用例设计)
  16. 如何轻松关闭华为云中的服务和资源
  17. 绘声绘影2022绿色旗舰版安装教程及功能介绍
  18. (转载)使用Perl编写协议分析脚本
  19. JavaWeb图书管理系统
  20. 分布式系统与计算机网络

热门文章

  1. libpcap实现机制及接口函数
  2. qemu使用实例和常用参数
  3. VS不能编译指定版本(配置管理错误)
  4. warning C4251 needs to have dll-interface解决办法
  5. VC++运算符与优先级
  6. Linux core dump的详细介绍及使用
  7. openstack创建实例报错Exceeded maximum number of retries
  8. 创建域名Linux服务器,linux 构建域名服务器
  9. volatile: 多线程程序员最好的朋友
  10. 扩展 日历_2021少林日历 | 以最美的方式记录时光