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 相关文章推荐
详解Python if-elif-else知识点
Jun 11 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
python实现的自动发送消息功能详解
Aug 15 Python
基于python的列表list和集合set操作
Nov 24 Python
Python tkinter模版代码实例
Feb 05 Python
Python识别html主要文本框过程解析
Feb 18 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
Python容器类型公共方法总结
Aug 19 Python
Python logging日志库空间不足问题解决
Sep 14 Python
Python实现聚类K-means算法详解
Jul 15 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 中文处理函数集合
2008/08/27 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
js常用代码段整理
2011/11/30 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
vue实现页面滚动到底部刷新
2019/08/16 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
微信跳一跳python自动代码解读1.0
2018/01/12 Python
解决python "No module named pip" 的问题
2018/10/13 Python
wxPython实现文本框基础组件
2019/11/18 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
学校读书活动总结
2014/06/30 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
60句有关成长的名言
2019/09/04 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
Python实现自动玩连连看的脚本分享
2022/04/04 Python