opencv計算點集凸包

2021-09-24 09:06:47 字數 1090 閱讀 4011

點集求凸包的問題經常會遇到,  給出了一種思路,有空了再仔細研究,本文總結了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的...