OpenCV  4.10.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)
 返回所有沃罗诺伊面元的列表。
 
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 对象>
cv.Subdiv2D(rect) -> <Subdiv2D 对象>

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

◆ Subdiv2D() [2/2]

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

这是一个简化成员函数,提供方便。它只与其接受的参数不同。

参数
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个数字的向量提供,其中每2个数字是一个边的顶点。即 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个数字的向量提供,其中每2个数字是一个三角形顶点。即 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。
返回
vertex (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

返回所有沃罗诺伊面元的列表。

参数
idx要考虑的顶点ID向量。对于所有顶点,您可以通过空向量传递。
facetList输出向量包含Voronoi面。
facetCenters输出向量包含Voronoi面的中心点。

◆ 初始化Delaunay()

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

创建一个新的空Delaunay细分。

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

◆ 插入() [1/2]

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

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

参数
ptvec要插入的点。

此函数将点的向量插入到细分中,并相应地修改细分拓扑。

◆ 插入() [2/2]

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

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

参数
pt要插入的点。

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

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

◆ isRightOf()

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

◆ 定位()

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

◆ 创建新边()

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

◆ 创建新点()

int cv::Subdiv2D::newPoint ( Point2f  pt,
bool  isvirtual,
int  firstEdge = 0 
)
受保护的

◆ 下一个边()

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

返回以边缘为起点的下一边缘。

参数
edge分划边 ID。
返回
一个整数,表示围绕边起点的下一个边的ID:上图中的 eOnext,其中 e 是输入边)。

◆ 旋转边()

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

返回同一四边形的另一个边缘。

参数
edge分划边 ID。
旋转指定返回与输入quad-edge相同的边的参数。以下值是可能的
  • 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
受保护的

所有的顶点。


本类的文档是由以下文件生成的