python求平行四邊形面積_python 已知平行四邊形三個點,求第四個點的案例

我就廢話不多說了,大家還是直接看代碼吧!

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.先求任意四個點連成四邊形的面積

這個問題可以用下面的圖簡單的看一下

圖像的坐標如上圖所示,大致的想法就是四個點可以確定四條線,然后進行判斷,在紅色區域中則為面積中的一個像素,否則不在。先求四條線的斜率

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.求相交的面積

兩個面積分別求出來以后,兩個面積的交集面積最簡單的可以通過對照兩個區域的坐標進行求解。

也就是在分別計算兩個面積的時候記下符合條件的坐標(x,y)存放到數組中,最后比較兩個數組中相等的元素的個數即可求解。

3.并面積

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

并面積=S1-iu+S2

4.IOU

交面積/并面積

5.測試

(1)

(2)

(3)

可以看到最后一種情況紅框已經把ground truth包含了,所以可以直接用S2/S1來檢驗算法的準確性

而13882/19307=0.719013829181126,可以證明算法的準確性。

測試代碼:鏈接

和別的算法進行比較

還是有區別的。。。

v2是向量方法計算

v3是shapely包計算

以上這篇python 已知平行四邊形三個點,求第四個點的案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533979.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533979.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533979.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

eview面板數據之混合回歸模型_【視頻教程】Eviews系列25|面板數據回歸分析之Hausman檢驗及本章常見問題解答...

點擊上方關注我們!本期我們學習Eviews統計建模最后一部分--面板數據回歸分析Hausman檢驗及本章常見問題解答。實操&#xff1a;Hausman檢驗判斷是固定效應模型還是隨機效應模型上期我們講到模型判斷若選擇模型2,需進一步通過Hausman檢驗判斷固定效應還是隨機效應&#xff0c;接…

python打出由邊框包圍的_python opencv 圖像邊框(填充)添加及圖像混合的實現方法(末尾實現類似幻燈片漸變的效果)...

圖像邊框的實現圖像邊框設計的主要函數cv.copyMakeBorder()——實現邊框填充主要參數如下&#xff1a;參數一&#xff1a;源圖像——如&#xff1a;讀取的img參數二——參數五分別是&#xff1a;上下左右邊的寬度——單位&#xff1a;像素參數六&#xff1a;邊框類型&#xff1…

mysql5.7.21備份腳本_Shell腳本使用匯總整理——mysql數據庫5.7.8以后備份腳本

#!/bin/sh#db_backups_conf.txt文件路徑db_backups_conf"/wocloud/shell/db_backups_conf.txt"#判斷文件是否存在if [ -f "${db_backups_conf}" ];thenecho $(date %Y-%m-%d %H:%M:%S)" 數據庫配置信息文件存在&#xff0c;開始進行數據備份"#獲…

python嵌套列表操作_python基礎(list列表的操作,公共方法,列表嵌套,元祖)...

list 列表索引&#xff0c;切片與str相同。列表的操作(增刪改查)1&#xff0c;增加.append()  追加&#xff0c;增加到最后li [alex,wusir,egon,女神,taibai]li.append(ppp)print(li).insert()  中間插入&#xff0c;通過索引li [alex,wusir,egon,女神,taibai]li.insert(…

mybatis mysql selectkey_Mybatis示例之SelectKey的應用

SelectKey在Mybatis中是為了解決Insert數據時不支持主鍵自動生成的問題&#xff0c;他可以很隨意的設置生成主鍵的方式。不管SelectKey有多好&#xff0c;盡量不要遇到這種情況吧&#xff0c;畢竟很麻煩。SelectKey需要注意order屬性&#xff0c;像Mysql一類支持自動增長類型的…

python程序設計上機實踐第三章答案_20192419 實驗三《Python程序設計》實驗報告

學號 2019-2020-2 《Python程序設計》實驗3報告課程&#xff1a;《Python程序設計》班級&#xff1a;1924姓名&#xff1a; 萬騰陽學號&#xff1a;20192419實驗教師&#xff1a;王志強實驗日期&#xff1a;2020年5月16日必修/選修&#xff1a; 公選課1.實驗內容創建服務端和客…

完成數獨的算法 python_python實現數獨算法實例

本文實例講述了python實現數獨算法的方法。分享給大家供大家參考。具體如下&#xff1a;# -*- coding: utf-8 -*-Created on 2012-10-5author: Administratorfrom collections import defaultdictimport itertoolsa [[ 0, 7, 0, 0, 0, 0, 0, 0, 0], #0[ 5, 0, 3, 0, 0, 6, 0, …

python讀取多個文件csv_Python:讀取多個文本文件并寫入相應的csv文件

我在別處找不到這個問題的答案&#xff0c;所以我將繼續把它貼在這里&#xff1a;我有一個Python腳本&#xff0c;它將讀取文本文件的內容&#xff0c;將其內容拆分為單詞&#xff0c;然后輸出一個CSV文件&#xff0c;該文件將文本縮減為單詞頻率列表。(最后&#xff0c;我將插…

java treetable_在Swing中創建TreeTable | 學步園

TreeTable是Tree和Table的一個結合&#xff0d;就是一個即能夠展開和收起行&#xff0c;同時也能夠顯示多個列的組件。在Swing的標準包里沒有一個叫做JtreeTable的組件&#xff0c;但是我們很容易通過把Jtree做成Jtable的渲染器來創建一個這樣的組件。這篇文章就是關于如何使用…

python爬去微博十大流行語_用python重新定義【2019十大網絡流行語】-后臺/架構/數據庫-敏捷大拇指-一個敢保留真話的IT精英社區...

↑關注 置頂 ~ 有趣的不像個技術號52568040f9313098ffa367d9d9d21437.jpg (5.73 KB, 下載次數: 0)2019-12-10 04:43 上傳3f4d5fe0016d011a7a68af763314befd.jpg (1.06 KB, 下載次數: 0)2019-12-10 04:43 上傳“文明互鑒真硬核&#xff0c;融梗檸檬誰覺得。霸凌第一九九六&…

java中怎么獲取配置文件的值_java如何獲取配置文件的值

轉&#xff1a;原創 編碼小王子 發布于2018-10-11 18:07:52 閱讀數 2722 收藏展開java大型項目中都會很多系統常量,比如說數據庫的賬號和密碼,以及各種token值等,都需要統一的管理,如果零落的散布到各個類等具體的代碼中的話,在后期管理上將是一場災難,所有需要對這些變量進行統…

python實現隊列_用Python實現的數據結構與算法:隊列

一、概述隊列(Queue)是一種先進先出(FIFO)的線性數據結構&#xff0c;插入操作在隊尾(rear)進行&#xff0c;刪除操作在隊首(front)進行。二、ADT隊列ADT(抽象數據類型)一般提供以下接口&#xff1a;Queue() 創建隊列enqueue(item) 向隊尾插入項dequeue() 返回隊首的項&#xf…

java 監聽窗口是否改變_JAVA項目監聽文件是否發生變化

一.spring容器都初始化完成之后做操作packagecom.bijian.study.listener;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.ApplicationListener;importorg.springframework.context.event.ContextRefreshedEvent;importorg.s…

笨辦法學python3 pdf 腳本之家_解決python3輸入的坑——input()

如下所示&#xff1a;a,b,c,d input()很簡單的代碼&#xff0c;如果輸入為1 -1 -2 3結果會報錯&#xff0c;原因在于input函數會將你的輸入作為python腳本運行&#xff0c;那么輸入就變成了1-1 -2 3&#xff0c;即0 -2 3結果當然是錯誤的了&#xff0c;解決辦法就是將輸入用引…

java 數組寫法_java書寫、數據類型、數組定義

這里只記錄java與php、javascript不同的地方&#xff0c;相同的地方就不贅述了。1.java文件源碼為以.java為后綴的文件&#xff0c;字節碼文件是以.class為后綴的文件。2.寫好一個java源碼之后&#xff0c;cmd進入源碼文件盤符&#xff0c;用命令 javac helloworld.java將源碼轉…

python爬蟲高級知識點_Python爬蟲知識點梳理總結,殿堂級小白入門必讀

數據分析是任何技術一樣。你應該學習的目標。目標就像燈塔,指引你前進。我見過很多合作伙伴學習學習,然后學會放棄。事實上,很大一部分原因是沒有明確的目標,所以你必須清楚學習的目的。你準備學習爬行之前,問問你自己為什么你想學爬行。有些人為了工作,一些為了好玩,和做一定黑…

java running_Running

/****/package test;import java.sql.ResultSet;import java.sql.SQLException;/*** author huangqin**/public class QuestString {private int curPage;//當前頁數private int maxPage;//最大頁數private int maxRowCount;//總記錄數private int pageSize2;//每頁顯示的記錄數…

python停用詞表_多版本中文停用詞詞表 + 多版本英文停用詞詞表 + python詞表合并程序...

文章簡介與更新記錄如果你只想獲取中文停用詞此表,請直接到文章結尾下載項目文件,其中包括三個中文停用詞詞表,一個英文停用詞詞表和一個合并詞表的.py文件2017/07/04 創建文章,上傳文件2017/07/04 更新了合并代碼,添加了新的中文停用詞表(哈工大擴展版本)和一個新的停用詞表,現…

mysql collect_set_hive列轉行 (collect_set())

一、問題hive如何將a b 1a b 2a b 3c d 4c d 5c d 6變為&#xff1a;a b 1,2,3c d 4,5,6二、數據test.txta b 1a b 2a b 3c d …

python編寫遞歸函數和非遞歸函數、輸出斐波那契數列_分別用非遞歸和遞歸的方法編寫函數求斐波那契數列第n項。斐波那契數列1,1,2,3,5,8,13,…...

展開全部/**已知Fibonacci數列&#xff1a;1,1,2,3,5,8,……&#xff0c;F(1)1&#xff0c;F(2)1&#xff0c;F(n)F(n-1)F(n-2)*/#include #include typedef long long int int64;//方法1&#xff0c;遞歸法int64 Fibonacci(int n){int64 sum;if(n<0){printf("參數值e6…