OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
cv::Subdiv2D 类参考

#include <opencv2/imgproc.hpp>

cv::Subdiv2D 的协作图

结构体  QuadEdge
 
结构体  Vertex(顶点)
 

公共类型

枚举  {
  PTLOC_ERROR = -2 ,
  PTLOC_OUTSIDE_RECT = -1 ,
  PTLOC_INSIDE = 0 ,
  PTLOC_VERTEX = 1 ,
  PTLOC_ON_EDGE = 2
}
 
枚举  {
  NEXT_AROUND_ORG = 0x00 ,
  NEXT_AROUND_DST = 0x22 ,
  PREV_AROUND_ORG = 0x11 ,
  PREV_AROUND_DST = 0x33 ,
  NEXT_AROUND_LEFT = 0x13 ,
  NEXT_AROUND_RIGHT = 0x31 ,
  PREV_AROUND_LEFT = 0x20 ,
  PREV_AROUND_RIGHT = 0x02
}
 

公共成员函数

 Subdiv2D ()
 
 Subdiv2D (Rect rect)
 
int edgeDst (int edge, Point2f *dstpt=0) const
 返回边的目标。
 
int edgeOrg (int edge, Point2f *orgpt=0) const
 返回边的起点。
 
int findNearest (Point2f pt, Point2f *nearestPt=0)
 查找最接近给定点的细分顶点。
 
int getEdge (int edge, int nextEdgeType) const
 返回与给定边相关的边之一。
 
void getEdgeList (std::vector< Vec4f > &edgeList) const
 返回所有边的列表。
 
void getLeadingEdgeList (std::vector< int > &leadingEdgeList) const
 返回连接到每个三角形的引导边ID列表。
 
void getTriangleList (std::vector< Vec6f > &triangleList) const
 返回所有三角形的列表。
 
Point2f getVertex (int vertex, int *firstEdge=0) const
 从顶点 ID 返回顶点位置。
 
void getVoronoiFacetList (const std::vector< int > &idx, std::vector< std::vector< Point2f > > &facetList, std::vector< Point2f > &facetCenters)
 返回所有 Voronoi 面片的列表。
 
void initDelaunay (Rect rect)
 创建一个新的空Delaunay细分。
 
void insert (const std::vector< Point2f > &ptvec)
 将多个点插入到 Delaunay 三角剖分中。
 
int insert (Point2f pt)
 将单个点插入到 Delaunay 三角剖分中。
 
int locate (Point2f pt, int &edge, int &vertex)
 返回 Delaunay 三角剖分中点的位置。
 
int nextEdge (int edge) const
 返回边起点周围的下一条边。
 
int rotateEdge (int edge, int rotate) const
 返回同一四边形的另一条边。
 
int symEdge (int edge) const
 

保护成员函数

void calcVoronoi ()
 
void checkSubdiv () const
 
void clearVoronoi ()
 
int connectEdges (int edgeA, int edgeB)
 
void deleteEdge (int edge)
 
void deletePoint (int vtx)
 
int isRightOf (Point2f pt, int edge) const
 
int newEdge ()
 
int newPoint (Point2f pt, bool isvirtual, int firstEdge=0)
 
void setEdgePoints (int edge, int orgPt, int dstPt)
 
void splice (int edgeA, int edgeB)
 
void swapEdges (int edge)
 

保护属性

Point2f bottomRight
 边界矩形的右下角。
 
int freePoint
 
int freeQEdge
 
std::vector< QuadEdgeqedges
 所有的边。
 
int recentEdge
 
Point2f topLeft
 边界矩形的左上角。
 
bool validGeometry
 
std::vector< Vertexvtx
 所有的顶点。
 

成员枚举文档

◆ 匿名枚举

匿名枚举

Subdiv2D 点定位情况

枚举器
PTLOC_ERROR 

点定位错误。

PTLOC_OUTSIDE_RECT 

点在细分边界矩形之外。

PTLOC_INSIDE 

点在某个面片内部。

PTLOC_VERTEX 

点与细分的一个顶点重合。

PTLOC_ON_EDGE 

点在某条边上。

◆ 匿名枚举

匿名枚举

Subdiv2D 边类型导航 (参见: getEdge())

枚举器
NEXT_AROUND_ORG 
NEXT_AROUND_DST 
PREV_AROUND_ORG 
PREV_AROUND_DST 
NEXT_AROUND_LEFT 
NEXT_AROUND_RIGHT 
PREV_AROUND_LEFT 
PREV_AROUND_RIGHT 

构造函数 & 析构函数文档

◆ Subdiv2D() [1/2]

cv::Subdiv2D::Subdiv2D ( )
Python
cv.Subdiv2D() -> <Subdiv2D object>
cv.Subdiv2D(rect) -> <Subdiv2D object>

创建一个空的 Subdiv2D 对象。要创建一个新的空Delaunay细分,你需要使用 initDelaunay 函数。

◆ Subdiv2D() [2/2]

cv::Subdiv2D::Subdiv2D ( Rect rect)
Python
cv.Subdiv2D() -> <Subdiv2D object>
cv.Subdiv2D(rect) -> <Subdiv2D object>

这是一个重载的成员函数,为方便起见提供。它与上述函数的区别仅在于它接受的参数。

参数
rect包含所有要添加到细分中的二维点的矩形。

此函数创建一个空的Delaunay细分,可以使用 insert() 函数添加二维点。所有要添加的点都必须在指定矩形内,否则会引发运行时错误。

成员函数文档

◆ calcVoronoi()

void cv::Subdiv2D::calcVoronoi ( )
保护

◆ checkSubdiv()

void cv::Subdiv2D::checkSubdiv ( ) const
保护

◆ clearVoronoi()

void cv::Subdiv2D::clearVoronoi ( )
保护

◆ connectEdges()

int cv::Subdiv2D::connectEdges ( int edgeA,
int edgeB )
保护

◆ deleteEdge()

void cv::Subdiv2D::deleteEdge ( int edge)
保护

◆ deletePoint()

void cv::Subdiv2D::deletePoint ( int vtx)
保护

◆ edgeDst()

int cv::Subdiv2D::edgeDst ( int edge,
Point2f * dstpt = 0 ) const
Python
cv.Subdiv2D.edgeDst(edge) -> retval, dstpt

返回边的目标。

参数
edge细分边ID。
dstpt输出顶点位置。
返回
顶点 ID。

◆ edgeOrg()

int cv::Subdiv2D::edgeOrg ( int edge,
Point2f * orgpt = 0 ) const
Python
cv.Subdiv2D.edgeOrg(edge) -> retval, orgpt

返回边的起点。

参数
edge细分边ID。
orgpt输出顶点位置。
返回
顶点 ID。

◆ findNearest()

int cv::Subdiv2D::findNearest ( Point2f pt,
Point2f * nearestPt = 0 )
Python
cv.Subdiv2D.findNearest(pt) -> retval, nearestPt

查找最接近给定点的细分顶点。

参数
pt输入点。
nearestPt输出细分顶点。

此函数是另一个用于在细分中定位输入点的函数。它找到离输入点最近的细分顶点。尽管包含输入点的面片(使用 locate() 定位)被用作起点,但它不一定是该面片的顶点之一。

返回
顶点 ID。

◆ getEdge()

int cv::Subdiv2D::getEdge ( int edge,
int nextEdgeType ) const
Python
cv.Subdiv2D.getEdge(edge, nextEdgeType) -> retval

返回与给定边相关的边之一。

参数
edge细分边ID。
nextEdgeType指定返回相关边中的哪一个的参数。可能的值如下:
  • NEXT_AROUND_ORG 围绕边原点的下一个边 (如果 e 是输入边,则下图中的 eOnext)
  • NEXT_AROUND_DST 边顶点周围的下一个 (eDnext)
  • PREV_AROUND_ORG 围绕边原点的上一个边 (反向的 eRnext )
  • PREV_AROUND_DST 围绕边目的地的上一个边 (反向的 eLnext )
  • NEXT_AROUND_LEFT 左面片周围的下一个 (eLnext)
  • NEXT_AROUND_RIGHT 右面片周围的下一个 (eRnext)
  • PREV_AROUND_LEFT 围绕左面片的上一个边 (反向的 eOnext )
  • PREV_AROUND_RIGHT 围绕右面片的上一个边 (反向的 eDnext )
示例输出
返回
与输入边相关的边 ID。

◆ getEdgeList()

void cv::Subdiv2D::getEdgeList ( std::vector< Vec4f > & edgeList) const
Python
cv.Subdiv2D.getEdgeList() -> edgeList

返回所有边的列表。

参数
edgeList输出向量。

此函数将每条边作为4个数字的向量给出,其中每两个数字代表一个边的顶点。例如,org_x = v[0], org_y = v[1], dst_x = v[2], dst_y = v[3]。

◆ getLeadingEdgeList()

void cv::Subdiv2D::getLeadingEdgeList ( std::vector< int > & leadingEdgeList) const
Python
cv.Subdiv2D.getLeadingEdgeList() -> leadingEdgeList

返回连接到每个三角形的引导边ID列表。

参数
leadingEdgeList输出向量。

此函数为每个三角形提供一个边ID。

◆ getTriangleList()

void cv::Subdiv2D::getTriangleList ( std::vector< Vec6f > & triangleList) const
Python
cv.Subdiv2D.getTriangleList() -> triangleList

返回所有三角形的列表。

参数
triangleList输出向量。

此函数将每个三角形作为6个数字的向量给出,其中每两个数字代表一个三角形顶点。例如,p1_x = v[0], p1_y = v[1], p2_x = v[2], p2_y = v[3], p3_x = v[4], p3_y = v[5]。

◆ getVertex()

Point2f cv::Subdiv2D::getVertex ( int vertex,
int * firstEdge = 0 ) const
Python
cv.Subdiv2D.getVertex(vertex) -> retval, firstEdge

从顶点 ID 返回顶点位置。

参数
vertex顶点 ID。
firstEdge (第一个边)可选。连接到该顶点的第一个边ID。
返回
顶点 (x,y)

◆ getVoronoiFacetList()

void cv::Subdiv2D::getVoronoiFacetList ( const std::vector< int > & idx,
std::vector< std::vector< Point2f > > & facetList,
std::vector< Point2f > & facetCenters )
Python
cv.Subdiv2D.getVoronoiFacetList(idx) -> facetList, facetCenters

返回所有 Voronoi 面片的列表。

参数
idx要考虑的顶点ID向量。对于所有顶点,可以传递空向量。
facetListVoronoi面片的输出向量。
facetCentersVoronoi面片中心点的输出向量。

◆ initDelaunay()

void cv::Subdiv2D::initDelaunay ( Rect rect)
Python
cv.Subdiv2D.initDelaunay(rect) ->

创建一个新的空Delaunay细分。

参数
rect包含所有要添加到细分中的二维点的矩形。

◆ insert() [1/2]

void cv::Subdiv2D::insert ( const std::vector< Point2f > & ptvec)
Python
cv.Subdiv2D.insert(pt) -> retval
cv.Subdiv2D.insert(ptvec) ->

将多个点插入到 Delaunay 三角剖分中。

参数
ptvec要插入的点。

此函数将点向量插入细分中,并适当地修改细分拓扑。

◆ insert() [2/2]

int cv::Subdiv2D::insert ( Point2f pt)
Python
cv.Subdiv2D.insert(pt) -> retval
cv.Subdiv2D.insert(ptvec) ->

将单个点插入到 Delaunay 三角剖分中。

参数
pt要插入的点。

此函数将单个点插入细分中,并适当地修改细分拓扑。如果已存在具有相同坐标的点,则不会添加新点。

返回
点的ID。
注意
如果点位于三角剖分指定矩形之外,则会引发运行时错误。

◆ isRightOf()

int cv::Subdiv2D::isRightOf ( Point2f pt,
int edge ) const
保护

◆ locate()

int cv::Subdiv2D::locate ( Point2f pt,
int & edge,
int & vertex )
Python
cv.Subdiv2D.locate(pt) -> retval, edge, vertex

返回 Delaunay 三角剖分中点的位置。

参数
pt要定位的点。
edge点所属或位于其右侧的输出边。
vertex可选的输出顶点,输入点与其重合。

此函数在细分中定位输入点,并给出三角形的边或顶点之一。

返回
一个整数,指定点定位的以下五种情况之一
  • 点落入某个面片。函数返回 PTLOC_INSIDE,并且 edge 将包含该面片的其中一条边。
  • 点落到边上。函数返回 PTLOC_ON_EDGE,并且 edge 将包含此边。
  • 点与细分的一个顶点重合。函数返回 PTLOC_VERTEX,并且 vertex 将包含指向该顶点的指针。
  • 点在细分参考矩形之外。函数返回 PTLOC_OUTSIDE_RECT,并且不会填充任何指针。
  • 输入参数之一无效。会引发运行时错误,或者,如果选择静默或“父”错误处理模式,则返回 PTLOC_ERROR

◆ newEdge()

int cv::Subdiv2D::newEdge ( )
保护

◆ newPoint()

int cv::Subdiv2D::newPoint ( Point2f pt,
bool isvirtual (是否虚拟),
int firstEdge = 0 )
保护

◆ nextEdge()

int cv::Subdiv2D::nextEdge ( int edge) const
Python
cv.Subdiv2D.nextEdge(edge) -> retval

返回边起点周围的下一条边。

参数
edge细分边ID。
返回
一个整数,表示围绕边原点的下一个边ID:如果 e 是输入边,则为上图中的 eOnext)。

◆ rotateEdge()

int cv::Subdiv2D::rotateEdge ( int edge,
int rotate ) const
Python
cv.Subdiv2D.rotateEdge(edge, rotate) -> retval

返回同一四边形的另一条边。

参数
edge细分边ID。
rotate指定返回与输入边属于同一四边形边的哪个边的参数。可能的值如下:
  • 0 - 输入边 (如果 e 是输入边,则下图中的 e)
  • 1 - 旋转边 (eRot)
  • 2 - 反转边(反转的 e(绿色))
  • 3 - 反转的旋转边(反转的 eRot(绿色))
返回
与输入边相同的四边形的边 ID 之一。

◆ setEdgePoints()

void cv::Subdiv2D::setEdgePoints ( int edge,
int orgPt,
int dstPt )
保护

◆ splice()

void cv::Subdiv2D::splice ( int edgeA,
int edgeB )
保护

◆ swapEdges()

void cv::Subdiv2D::swapEdges ( int edge)
保护

◆ symEdge()

int cv::Subdiv2D::symEdge ( int edge) const
Python
cv.Subdiv2D.symEdge(edge) -> retval

成员数据文档

◆ bottomRight

Point2f cv::Subdiv2D::bottomRight
保护

边界矩形的右下角。

◆ freePoint

int cv::Subdiv2D::freePoint
保护

◆ freeQEdge

int cv::Subdiv2D::freeQEdge
保护

◆ qedges

std::vector<QuadEdge> cv::Subdiv2D::qedges
保护

所有的边。

◆ recentEdge

int cv::Subdiv2D::recentEdge
保护

◆ topLeft

Point2f cv::Subdiv2D::topLeft
保护

边界矩形的左上角。

◆ validGeometry

bool cv::Subdiv2D::validGeometry
保护

◆ vtx

std::vector<Vertex> cv::Subdiv2D::vtx
保护

所有的顶点。


此类的文档是从以下文件生成的