任意多點組成封閉多邊形

2021-09-24 03:37:04 字數 1214 閱讀 4990

這裡主要講將得到的一組點,連線成封閉多邊形,並顯示,當然這裡的點是影象中的點。

主要的包是shapely,可以通過pip 來安裝,這個庫可能比較小眾,但是還挺好用的,不用自己寫函式了。

裡面有兩個類,乙個是point類,乙個是polygon類,就是通過判斷點在不在這個多邊形內,生成mask座標。

舉乙個例子:我得到的座標為

(596,221),(597,233),(591,245),(589,256),(584,255),(580,249),(590,233),(593,225)

想知道由這幾個點組成的多邊形內都有哪些點。可以這樣寫

temp = np.ones(gray.shape,np.uint8)*0 #黑色背景

area_1 = polygon([(596,221),(597,233),(591,245),(589,256),(584,255),(580,249),(590,233),(593,225)])

bbox = area_1.bounds

arr_mask =

min_x,min_y,max_x,max_y = bbox[0],bbox[1],bbox[2],bbox[3]

for i in range(int(min_x),int(max_x+1)):

for j in range(int(min_y),int(max_y+1)):

p_tmp = point(i,j)

if(p_tmp.within(area_1)==true):

print(i,j)

pos_arr = [[i,j]]

mmsk = np.array(arr_mask)

cv2.drawcontours(temp,mmsk,-1,(255,255,255),thickness=-1)

cv2.imshow('hhh',temp)

cv2.waitkey(0)然後就會顯示mask了

求任意多邊形面積(凹多邊形和凸多邊形)

遇到問題 已知多邊形的各個左邊點,要求多邊形的面積 然後我搜尋了下看到這篇文章 這個人說的不多,但是簡單明瞭 首先已知各定點的座標分別為 x1,y1 x2,y2 x3,y3 xn,yn 則該多邊形的面積公式為 s 1 2 x1 y2 x2 y1 x2 y3 x3 y2 xk yk 1 xk 1 yk...

任意封閉多邊形的掃瞄線填充演算法類

1 掃瞄線填充演算法類 顯示 列印001 class cpfill 002 017 建構函式 模組入口,koradji 注,合理的設計這個地方,就可以完全不用改動其他的地方就可以使用這個類 018 cpfill cpfill 019 020 獲取前乙個點的索引號 021 int cpfill get...

任意多邊形面積

給定多邊形的頂點座標 有序 讓你來求這個多邊形的面積,你會怎麼做?我們知道,任意多邊形都可以分割為n個三角形,所以,如果以這為突破點,那麼我們第一步就是把給定的多邊形,分割為數個三角形,分別求面積,最後累加就可以了,把多邊形分割為三角形的方式多種多樣,在這裡,我們按照如下圖的方法分割 s點作為起始點...