python 已知平行四边形三个点,求第四个点的案例


Posted in Python onApril 12, 2020

我就废话不多说了,大家还是直接看代码吧!

import numpy as np
#已知平行四边形三个点,求第四个点
#计算两点之间的距离
def CalcEuclideanDistance(point1,point2):
  vec1 = np.array(point1)
  vec2 = np.array(point2)
  distance = np.linalg.norm(vec1 - vec2)
  return distance
#计算第四个点
def CalcFourthPoint(point1,point2,point3): #pint3为A点
  D = (point1[0]+point2[0]-point3[0],point1[1]+point2[1]-point3[1])
  return D
#三点构成一个三角形,利用两点之间的距离,判断邻边AB和AC,利用向量法以及平行四边形法则,可以求得第四个点D
def JudgeBeveling(point1,point2,point3):
  dist1 = CalcEuclideanDistance(point1,point2)
  dist2 = CalcEuclideanDistance(point1,point3)
  dist3 = CalcEuclideanDistance(point2,point3)
  dist = [dist1, dist2, dist3]
  max_dist = dist.index(max(dist))
  if max_dist == 0:
    D = CalcFourthPoint(point1,point2,point3)
  elif max_dist == 1:
    D = CalcFourthPoint(point1,point3,point2)
  else:
    D = CalcFourthPoint(point2,point3,point1)
  return D
 
print(JudgeBeveling((0,1),(1,0),(1,1)))
print(JudgeBeveling((5,39),(500,35),(496,17)))

补充知识:计算图像中任意四个点连成的四边形面积与Ground truth的IOU(Python)

1.先求任意四个点连成四边形的面积

这个问题可以用下面的图简单的看一下

python 已知平行四边形三个点,求第四个点的案例

图像的坐标如上图所示,大致的想法就是四个点可以确定四条线,然后进行判断,在红色区域中则为面积中的一个像素,否则不在。先求四条线的斜率

def line_slope(x1,y1,x2,y2,x3,y3,x4,y4):
    k1=(y2-y1)/(x2-x1)
    k2=(y3-y2)/(x3-x2)
    k3=(y4-y3)/(x4-x3)
    k4=(y1-y4)/(x1-x4)
    return k1,k2,k3,k4

然后计算每个位置上的各个函数值

l1=int(tk1*(i-tx1)+ty1)
        l2=int(tk2*(i-tx2)+ty2)
        l3=int(tk3*(i-tx3)+ty3)
        l4=int(tk4*(i-tx4)+ty4)

判断条件很重要,因为左边是那样排列的,所以判断条件就是

(l1<=j)&(l2>=j)&(l3>=j)&(l4<=j)

也就是在红色区域中任取一点都满足这个条件。定义一个全局变量,满足条件就+1。面积就求出来了。

其实求面积并不是我的目的

2.求相交的面积

python 已知平行四边形三个点,求第四个点的案例

两个面积分别求出来以后,两个面积的交集面积最简单的可以通过对照两个区域的坐标进行求解。

也就是在分别计算两个面积的时候记下符合条件的坐标(x,y)存放到数组中,最后比较两个数组中相等的元素的个数即可求解。

3.并面积

交的面积计算完后,可以用下面的公式(S1:四边形1的面积、S2:四边形2的面积、iu:交面积)

并面积=S1-iu+S2

4.IOU

交面积/并面积

5.测试

(1)

python 已知平行四边形三个点,求第四个点的案例

(2)

python 已知平行四边形三个点,求第四个点的案例

(3)

python 已知平行四边形三个点,求第四个点的案例

可以看到最后一种情况红框已经把ground truth包含了,所以可以直接用S2/S1来检验算法的准确性

而13882/19307=0.719013829181126,可以证明算法的准确性。

测试代码:链接

和别的算法进行比较

还是有区别的。。。

v2是向量方法计算

v3是shapely包计算

以上这篇python 已知平行四边形三个点,求第四个点的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows下python2.7.8安装图文教程
May 26 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
解决pyttsx3无法封装的问题
Dec 24 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
Python终端输出彩色字符方法详解
Feb 11 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
Python必备技巧之函数的使用详解
Apr 04 Python
python 已知三条边求三角形的角度案例
Apr 12 #Python
python实现输入三角形边长自动作图求面积案例
Apr 12 #Python
Python3如何判断三角形的类型
Apr 12 #Python
Python判断三段线能否构成三角形的代码
Apr 12 #Python
Python 实现打印单词的菱形字符图案
Apr 12 #Python
python 使用while循环输出*组成的菱形实例
Apr 12 #Python
Python利用for循环打印星号三角形的案例
Apr 12 #Python
You might like
PHP配置文件中最常用四个ini函数
2007/03/19 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
js面向对象编程总结
2017/02/16 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
优秀女职工事迹材料
2014/02/06 职场文书
认购协议书范本
2014/04/22 职场文书
法人任命书范本
2014/06/04 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
2014年统战工作总结
2014/12/09 职场文书
法务专员岗位职责
2015/02/14 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
七个Python必备的GUI库
2021/04/27 Python
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python