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分割和拼接字符串
Nov 01 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
Python实现批量下载文件
May 17 Python
python+opencv实现动态物体追踪
Jan 09 Python
django 单表操作实例详解
Jul 30 Python
python常用数据重复项处理方法
Nov 22 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Python接收手机短信的代码整理
Aug 02 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
基于python实现复制文件并重命名
Sep 16 Python
python 命令行传参方法总结
May 25 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批量采集下载美女图片的实现代码
2013/06/03 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
小程序实现列表多个批量倒计时
2021/01/29 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
python PIL模块的基本使用
2020/09/29 Python
python 带时区的日期格式化操作
2020/10/23 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
职业生涯规划书结束语
2014/04/15 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
党员转正党支部意见
2015/06/02 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android