#include <opencv2/imgproc.hpp>
|
| enum | {
PTLOC_ERROR = -2
,
PTLOC_OUTSIDE_RECT = -1
,
PTLOC_INSIDE = 0
,
PTLOC_VERTEX = 1
,
PTLOC_ON_EDGE = 2
} |
| |
| enum | {
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) |
| |
| | Subdiv2D (Rect2f rect2f) |
| |
| 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 | initDelaunay (Rect2f 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 |
| | 返回同一 quad-edge 的另一条边。
|
| |
| int | symEdge (int edge) const |
| |
◆ 匿名枚举
Subdiv2D 点位置情况
| 枚举值 (Enumerator) |
|---|
| PTLOC_ERROR | 点位置错误。
|
| PTLOC_OUTSIDE_RECT | 点在细分边界矩形之外。
|
| PTLOC_INSIDE | 点在某个区域内部。
|
| PTLOC_VERTEX | 点与细分顶点重合。
|
| PTLOC_ON_EDGE | 点在某个边上。
|
◆ 匿名枚举
Subdiv2D 边类型导航 (参见:getEdge())
| 枚举值 (Enumerator) |
|---|
| 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/3]
| cv::Subdiv2D::Subdiv2D |
( |
| ) |
|
| Python |
|---|
| cv.Subdiv2D( | | ) -> | <Subdiv2D 对象> |
| cv.Subdiv2D( | rect | ) -> | <Subdiv2D 对象> |
| cv.Subdiv2D( | rect2f | ) -> | <Subdiv2D 对象> |
◆ Subdiv2D() [2/3]
| cv::Subdiv2D::Subdiv2D |
( |
Rect | rect | ) |
|
| Python |
|---|
| cv.Subdiv2D( | | ) -> | <Subdiv2D 对象> |
| cv.Subdiv2D( | rect | ) -> | <Subdiv2D 对象> |
| cv.Subdiv2D( | rect2f | ) -> | <Subdiv2D 对象> |
这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。
- 参数
-
该函数创建一个空的 Delaunay 细分,可以使用 insert() 函数添加二维点。所有要添加的点都必须在指定的矩形内,否则会引发运行时错误。
◆ Subdiv2D() [3/3]
| cv::Subdiv2D::Subdiv2D |
( |
Rect2f | rect2f | ) |
|
| Python |
|---|
| cv.Subdiv2D( | | ) -> | <Subdiv2D 对象> |
| cv.Subdiv2D( | rect | ) -> | <Subdiv2D 对象> |
| cv.Subdiv2D( | rect2f | ) -> | <Subdiv2D 对象> |
这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。
◆ 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 |
◆ edgeOrg()
| int cv::Subdiv2D::edgeOrg |
( |
int | edge, |
|
|
Point2f * | orgpt=0 ) const |
| Python |
|---|
| cv.Subdiv2D.edgeOrg( | edge | ) -> | retval, orgpt |
◆ 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 |
返回所有边的列表。
- 参数
-
函数以一个 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 列表。
- 参数
-
该函数为每个三角形提供一个边 ID。
◆ getTriangleList()
| void cv::Subdiv2D::getTriangleList |
( |
std::vector< Vec6f > & | triangleList | ) |
const |
| Python |
|---|
| cv.Subdiv2D.getTriangleList( | | ) -> | 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 向量。对于所有顶点,您可以传递空向量。 |
| facetList | 输出的 Voronoi 面列表。 |
| facetCenters | 输出的 Voronoi 面中心点列表。 |
◆ initDelaunay() [1/2]
| void cv::Subdiv2D::initDelaunay |
( |
Rect | rect | ) |
|
| Python |
|---|
| cv.Subdiv2D.initDelaunay( | rect | ) -> | None |
| cv.Subdiv2D.initDelaunay2f( | rect | ) -> | None |
创建一个新的空的 Delaunay 细分。
这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。
- 参数
-
◆ initDelaunay() [2/2]
| void cv::Subdiv2D::initDelaunay |
( |
Rect2f | rect | ) |
|
| Python |
|---|
| cv.Subdiv2D.initDelaunay( | rect | ) -> | None |
| cv.Subdiv2D.initDelaunay2f( | rect | ) -> | None |
创建一个新的空的 Delaunay 细分。
这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。
- 参数
-
◆ insert() [1/2]
| void cv::Subdiv2D::insert |
( |
const std::vector< Point2f > & | ptvec | ) |
|
| Python |
|---|
| cv.Subdiv2D.insert( | pt (点) | ) -> | retval |
| cv.Subdiv2D.insert( | ptvec | ) -> | None |
将多个点插入 Delaunay 三角剖分。
- 参数
-
该函数将一个点的向量插入到细分中,并相应地修改细分拓扑。
◆ insert() [2/2]
| int cv::Subdiv2D::insert |
( |
Point2f | pt (点) | ) |
|
| Python |
|---|
| cv.Subdiv2D.insert( | pt (点) | ) -> | retval |
| cv.Subdiv2D.insert( | ptvec | ) -> | None |
将单个点插入 Delaunay 三角剖分。
- 参数
-
该函数将单个点插入到细分中,并相应地修改细分拓扑。如果已存在具有相同坐标的点,则不会添加新点。
- 返回
- 点的 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 | 可选输出顶点,输入点与该顶点重合。 |
该函数定位输入点在细分中的位置,并给出三角形的边或顶点之一。
- 返回
- 一个整数,指定以下五种点位置情况之一:
◆ 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 |
返回边起始点周围的下一条边。
- 参数
-
- 返回
- 一个整数,表示边起始点周围的下一条边 ID(如果 e 是输入边,则为图片上方的 eOnext)。
◆ rotateEdge()
| int cv::Subdiv2D::rotateEdge |
( |
int | edge, |
|
|
int | rotate ) const |
| Python |
|---|
| cv.Subdiv2D.rotateEdge( | edge, rotate | ) -> | retval |
返回同一 quad-edge 的另一条边。
- 参数
-
| edge | 细分边 ID。 |
| rotate | 指定要返回的与输入边属于同一 quad-edge 的边的参数。可能的值如下:
- 0 - 输入边(如果 e 是输入边,则为图片下方的 e)
- 1 - 旋转后的边(eRot)
- 2 - 反转的边(反转的 e(绿色))
- 3 - 反转的旋转后的边(反转的 eRot(绿色))
|
- 返回
- 与输入边属于同一 quad-edge 的边 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
◆ freePoint
| int cv::Subdiv2D::freePoint |
|
保护 |
◆ freeQEdge
| int cv::Subdiv2D::freeQEdge |
|
保护 |
◆ qedges
| std::vector<QuadEdge> cv::Subdiv2D::qedges |
|
保护 |
◆ recentEdge
| int cv::Subdiv2D::recentEdge |
|
保护 |
◆ topLeft
◆ validGeometry
| bool cv::Subdiv2D::validGeometry |
|
保护 |
◆ vtx
| std::vector<Vertex> cv::Subdiv2D::vtx |
|
保护 |
该类的文档由以下文件生成: