點集求凸包的問題經常會遇到, 給出了一種思路,有空了再仔細研究,本文總結了opencv中相關的方法並給出乙個例項。參考:
hull = cv.convexhull(points[, hull[, clockwise[, returnpoints]]])
引數說明:
points:點集。需要注意的是,該引數輸入的座標系是向右為x,向上為y,和迪卡爾座標系是相同的,而opencv中的影象座標系是向下為x,向右為y,即影象的左上角座標為(0,0)。
clockwise:如果設定為true,輸出的凸包是順時針的,如果設定為false,輸出的凸包是逆時針的。
returnpoints:如果設定為true,返回凸包的點座標,如果設定為false,輸出凸包點在點集points中的序號。
**如下:
# encoding:utf-8
import numpy as np
import cv2
import matplotlib.pyplot as plt
axis_list = [[3,1],[2,2],[3,3],[4,4],[2,4],[2,3],[1,2],[2,2],[2,1]]
axis_list = np.array(axis_list)
hull = cv2.convexhull(axis_list,clockwise=true,returnpoints=true)
print(hull)
hull = np.squeeze(hull)
plt.scatter(axis_list[:,0],axis_list[:,1])
plt.plot(hull[:,0],hull[:,1],"r")
plt.plot([hull[-1,0],hull[0,0]],[hull[-1,1],hull[0,1]],"r")
plt.show()
計算結果如下圖所示,其中藍色點是點集,紅色線條是凸包輪廓。
31 幾何演算法 點集的凸包
extern c class algorithmlib convexhull convexhull convexhull convexhull convexhull datastruct stack dynstack convexhull run const datastruct array dyn...
OpenCv 尋找凸包convexHull
凸包 convex hull 是乙個計算幾何 圖形學 中的概念,在乙個實數向量空間v中,對於給定集合x,所有包含x的凸集的交集s被稱為x的凸包。x的凸包可以用x內所有點 x1,x2 xn 的線性組合來構造。在二維歐幾里得空間中,凸包可以想象為一條剛好包著所有點的橡皮圈,用不嚴謹的話來講,給定二維平面...
計算幾何 凸包
有多個手機訊號發射器,求解乙個最小區域,要求所有的發射器都包含在這個最小區域中,並且任意兩台發射器之間的交流包含於在這個區域內。將所有的發射器看做為點,任意兩個點之間的連線都包含於乙個平面s 乙個平面的子集s 是凸的,當且僅當 s中的任意兩個點之間的連線都包含於 s中。點集 p的凸包是所有包含 p的...