OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
cv::Subdiv2D クラス

#include <opencv2/imgproc.hpp>

Collaboration diagram for cv::Subdiv2D:

クラス

struct  QuadEdge
 
struct  Vertex
 

公開型

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)
 すべてのボロノイ面のリストを返す。
 
void initDelaunay (Rect rect)
 新しい空のドロネー細分割を作成する。
 
void initDelaunay (Rect2f rect)
 新しい空のドロネー細分割を作成する。
 
void insert (const std::vector< Point2f > &ptvec)
 ドロネー三角形分割に複数の点を挿入する。
 
int insert (Point2f pt)
 ドロネー三角形分割に1つの点を挿入する。
 
int locate (Point2f pt, int &edge, int &vertex)
 ドロネー三角形分割内における点の位置を返す。
 
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
 すべての頂点。
 

列挙型メンバ詳解

◆ anonymous enum

anonymous enum

Subdiv2D の点位置のケース

列挙値
PTLOC_ERROR 

点位置エラー。

PTLOC_OUTSIDE_RECT 

細分割のバウンディング矩形の外側の点。

PTLOC_INSIDE 

いずれかの面の内側の点。

PTLOC_VERTEX 

細分割頂点のいずれかと一致する点。

PTLOC_ON_EDGE 

いずれかのエッジ上の点。

◆ anonymous enum

anonymous enum

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/3]

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

空の Subdiv2D オブジェクトを作成する。新しい空のドロネー細分割を作成するには initDelaunay 関数を使う必要がある。

◆ Subdiv2D() [2/3]

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

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
rect細分割に追加されるすべての2D点を含む矩形。

この関数は、insert() 関数を使って2D点を追加できる空のドロネー細分割を作成する。追加するすべての点は指定した矩形内に収まっていなければならず、そうでない場合は実行時エラーが発生する。

◆ Subdiv2D() [3/3]

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

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

メンバ関数詳解

◆ calcVoronoi()

void cv::Subdiv2D::calcVoronoi ( )
protected

◆ checkSubdiv()

void cv::Subdiv2D::checkSubdiv ( ) const
protected

◆ clearVoronoi()

void cv::Subdiv2D::clearVoronoi ( )
protected

◆ connectEdges()

int cv::Subdiv2D::connectEdges ( int edgeA,
int edgeB )
protected

◆ deleteEdge()

void cv::Subdiv2D::deleteEdge ( int edge)
protected

◆ deletePoint()

void cv::Subdiv2D::deletePoint ( int vtx)
protected

◆ 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出力の細分割頂点。

この関数は、細分割内で入力点の位置を特定するもう1つの関数である。入力点に最も近い細分割頂点を見つける。それは必ずしも入力点を含む面の頂点の1つとは限らないが、(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 の反転)
sample output
戻り値
入力エッジに関連するエッジ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出力ベクトル。

この関数は各三角形に対して1つのエッジ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。
戻り値
頂点 (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ボロノイ面の出力ベクトル。
facetCentersボロノイ面の中心点の出力ベクトル。

◆ initDelaunay() [1/2]

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

新しい空のドロネー分割を作成する。

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
rect細分割に追加されるすべての2D点を含む矩形。

◆ initDelaunay() [2/2]

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

新しい空のドロネー分割を作成する。

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
rect細分割に追加されるすべての2D点を含む矩形。

◆ insert() [1/2]

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

ドロネー三角形分割に複数の点を挿入する。

引数
ptvec挿入する点群。

この関数は点のベクトルを分割に挿入し、それに応じて分割のトポロジーを変更する。

◆ insert() [2/2]

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

ドロネー三角形分割に単一の点を挿入する。

引数
pt挿入する点。

この関数は単一の点を分割に挿入し、それに応じて分割のトポロジーを変更する。同じ座標の点がすでに存在する場合、新しい点は追加されない。

戻り値
点のID。
覚え書き
点が指定された矩形 rect の三角形分割の外側にある場合、実行時エラーが発生する。

◆ isRightOf()

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

◆ locate()

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

ドロネー三角形分割内における点の位置を返す。

引数
pt位置を特定する点。
edgeその点が属する、またはその点の右に位置する出力エッジ。
vertex入力点と一致する、省略可能な出力頂点。

この関数は入力点を分割内で位置特定し、三角形のエッジまたは頂点の1つを返す。

戻り値
an integer which specify one of the following five cases for point location:
  • 点がいずれかのファセット内に入る。この関数は PTLOC_INSIDE を返し、edge にはそのファセットのエッジの1つが格納される。
  • 点がエッジ上に乗る。この関数は PTLOC_ON_EDGE を返し、edge にはそのエッジが格納される。
  • 点が分割の頂点の1つと一致する。この関数は PTLOC_VERTEX を返し、vertex にはその頂点へのポインタが格納される。
  • 点が分割の参照矩形の外側にある。この関数は PTLOC_OUTSIDE_RECT を返し、ポインタは何も設定されない。
  • 入力引数の1つが無効である。実行時エラーが発生する。あるいは、silent または "parent" のエラー処理モードが選択されている場合は PTLOC_ERROR が返される。

◆ newEdge()

int cv::Subdiv2D::newEdge ( )
protected

◆ newPoint()

int cv::Subdiv2D::newPoint ( Point2f pt,
bool isvirtual,
int firstEdge = 0 )
protected

◆ 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

同じ quad-edge の別のエッジを返す。

引数
edge細分割エッジのID。
rotate入力エッジと同じクワッドエッジのうち、返すエッジを指定する引数。可能な値は次のとおり:
  • 0 - 入力エッジ ( e が入力エッジのとき、下図の e )
  • 1 - 回転エッジ ( eRot )
  • 2 - 反転エッジ (e の反転 (緑色))
  • 3 - 反転した回転エッジ (eRot の反転 (緑色))
戻り値
入力エッジと同じ quad-edge のエッジIDの1つ。

◆ setEdgePoints()

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

◆ splice()

void cv::Subdiv2D::splice ( int edgeA,
int edgeB )
protected

◆ swapEdges()

void cv::Subdiv2D::swapEdges ( int edge)
protected

◆ symEdge()

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

メンバ変数詳解

◆ bottomRight

Point2f cv::Subdiv2D::bottomRight
protected

バウンディング矩形の右下隅。

◆ freePoint

int cv::Subdiv2D::freePoint
protected

◆ freeQEdge

int cv::Subdiv2D::freeQEdge
protected

◆ qedges

std::vector<QuadEdge> cv::Subdiv2D::qedges
protected

すべてのエッジ。

◆ recentEdge

int cv::Subdiv2D::recentEdge
protected

◆ topLeft

Point2f cv::Subdiv2D::topLeft
protected

バウンディング矩形の左上隅。

◆ validGeometry

bool cv::Subdiv2D::validGeometry
protected

◆ vtx

std::vector<Vertex> cv::Subdiv2D::vtx
protected

すべての頂点。


このクラス詳解は次のファイルから抽出されました: