OpenCV 4.5.3(日本語機械翻訳)
クラス | 公開型 | 公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
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
}

公開メンバ関数

CV_WRAP Subdiv2D ()
CV_WRAP Subdiv2D (Rect rect)
CV_WRAP void initDelaunay (Rect rect)
新しい空のドロネー細分割を作成します。[【詳解】(英語]
CV_WRAP int insert (Point2f pt)
ドロネー三角錐に単一の点を挿入します。[【詳解】(英語]
CV_WRAP void insert (const std::vector< Point2f > &ptvec)
複数の点をドロネー三角錐に挿入します。[【詳解】(英語]
CV_WRAP int locate (Point2f pt, CV_OUT int &edge, CV_OUT int &vertex)
Delaunay Triangulation内の点の位置を返します。[【詳解】(英語]
CV_WRAP int findNearest (Point2f pt, CV_OUT Point2f *nearestPt=0)
与えられた点に最も近い細分化された頂点を見つけます。[【詳解】(英語]
CV_WRAP void getEdgeList (CV_OUT std::vector< Vec4f > &edgeList) const
すべてのエッジのリストを返します。[【詳解】(英語]
CV_WRAP void getLeadingEdgeList (CV_OUT std::vector< int > &leadingEdgeList) const
各三角形に接続されているリーディングエッジIDのリストを返します。[【詳解】(英語]
CV_WRAP void getTriangleList (CV_OUT std::vector< Vec6f > &triangleList) const
すべての三角形のリストを返します。[【詳解】(英語]
CV_WRAP void getVoronoiFacetList (const std::vector< int > &idx, CV_OUT std::vector< std::vector< Point2f > > &facetList, CV_OUT std::vector< Point2f > &facetCenters)
全てのボロノイファセットのリストを返します。[【詳解】(英語]
CV_WRAP Point2f getVertex (int vertex, CV_OUT int *firstEdge=0) const
頂点IDから頂点の位置を返します。[【詳解】(英語]
CV_WRAP int getEdge (int edge, int nextEdgeType) const
与えられたエッジに関連するエッジの 1 つを返します。[【詳解】(英語]
CV_WRAP int nextEdge (int edge) const
エッジの原点を中心とした次のエッジを返します。[【詳解】(英語]
CV_WRAP int rotateEdge (int edge, int rotate) const
同じquad-edgeの別の辺を返します。[【詳解】(英語]
CV_WRAP int symEdge (int edge) const
CV_WRAP int edgeOrg (int edge, CV_OUT Point2f *orgpt=0) const
辺の原点を返します。[【詳解】(英語]
CV_WRAP int edgeDst (int edge, CV_OUT Point2f *dstpt=0) const
エッジの目的地を返します。[【詳解】(英語]

限定公開メンバ関数

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

限定公開変数類

std::vector< Vertex > vtx
頂点のすべて
std::vector< QuadEdge > qedges
すべての辺
int freeQEdge
int freePoint
bool validGeometry
int recentEdge
Point2f topLeft
外接矩形の左上隅
Point2f bottomRight
バウンディングレクタンの右下隅

列挙型メンバ詳解

anonymous enum

anonymous enum

Subdiv2Dポイントロケーションのケース

列挙値
PTLOC_ERROR

点の位置のエラー

ptloc_outside_rect

細分化された境界矩形の外側にある点

PTLOC_INSIDE

あるファセットの内側にある点

PTLOC_VERTEX

点が細分化された頂点の1つと一致する

PTLOC_ON_EDGE

あるエッジ上の点

anonymous enum

anonymous enum

Subdiv2Dエッジタイプのナビゲーション(参照。getEdge())

構築子と解体子

Subdiv2D() [1/2]

CV_WRAP cv::Subdiv2D::Subdiv2D ( )

は、空のSubdiv2Dオブジェクトを作成します。新しい空のドロネー細分割を作成するにはinitDelaunay関数によってローカルに保存されたすべての記述子をデータセットに挿入して更新する.

Subdiv2D() [2/2]

CV_WRAP cv::Subdiv2D::Subdiv2D ( Rect rect )

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
rect 細分化された部分に追加されるすべての2Dポイントを含む矩形を作成します。

この関数は、空のドロネー細分割を作成し、そこに2Dポイントを追加します。insert(). 追加されるすべての点は,指定された矩形内になければならず,そうでない場合はランタイムエラーが発生します.

関数詳解

edgeDst()

CV_WRAP int cv::Subdiv2D::edgeDst ( int edge,
CV_OUT Point2f * dstpt = 0
) const

エッジの目的地を返します。

引数
edge 細分化されたエッジの ID。
dstpt 出力される頂点の位置。
戻り値
頂点の ID。

edgeOrg()

CV_WRAP int cv::Subdiv2D::edgeOrg ( int edge,
CV_OUT Point2f * orgpt = 0
) const

辺の原点を返します。

引数
edge 細分化されたエッジの ID。
orgpt 出力される頂点の位置。
戻り値
頂点の ID。

findNearest()

CV_WRAP int cv::Subdiv2D::findNearest ( Point2f pt,
CV_OUT Point2f * nearestPt = 0
)

与えられた点に最も近い細分化された頂点を見つけます。

引数
pt 入力点。
nearestPt 出力される細分化された頂点の位置。

この関数は、入力点を細分化された領域内に配置する別の関数です。この関数は,入力点に最も近い細分割の頂点を求めます.これは,入力点を含むファセットの頂点の1つとは限りませんが,そのファセット(を使って配置されます.locate()を使用して配置された)ファセットが出発点として使用されます。

戻り値
頂点の ID。

getEdge()

CV_WRAP int cv::Subdiv2D::getEdge ( int edge,
int nextEdgeType
) const

与えられたエッジに関連するエッジの 1 つを返します。

引数
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()

CV_WRAP void cv::Subdiv2D::getEdgeList ( CV_OUT std::vector< Vec4f > & edgeList ) const

すべてのエッジのリストを返します。

引数
edgeList 出力ベクトル。

org_x = v[0], org_y = v[1], dst_x = v[2], dst_y = v[3]のように、各辺を4つの数字のベクトルとして出力します。

getLeadingEdgeList()

CV_WRAP void cv::Subdiv2D::getLeadingEdgeList ( CV_OUT std::vector< int > & leadingEdgeList ) const

各三角形に接続されているリーディングエッジIDのリストを返します。

引数
leadingEdgeList 出力ベクトル。

この関数は、各三角形に1つのエッジIDを与えます。

getTriangleList()

CV_WRAP void cv::Subdiv2D::getTriangleList ( CV_OUT std::vector< Vec6f > & triangleList ) const

すべての三角形のリストを返します。

引数
triangleList 出力ベクトル。

p1_x = v[0], p1_y = v[1], p2_x = v[2], p2_y = v[3], p3_x = v[4], p3_y = v[5]のように、各三角形を6個のベクトルで表します。

getVertex()

CV_WRAP Point2f cv::Subdiv2D::getVertex ( int vertex,
CV_OUT int * firstEdge = 0
) const

頂点IDから頂点の位置を返します。

引数
vertex 頂点の ID。
firstEdge オプションです。頂点に接続されている最初のエッジIDです.
戻り値
頂点 (x,y)

getVoronoiFacetList()

CV_WRAP void cv::Subdiv2D::getVoronoiFacetList ( const std::vector< int > & idx,
CV_OUT std::vector< std::vector< Point2f > > & facetList,
CV_OUT std::vector< Point2f > & facetCenters
)

全てのボロノイファセットのリストを返します。

引数
idx 考慮する頂点IDのベクトル。すべての頂点に対して、空のベクトルを渡すことができます。
facetList ボロノイ面の出力ベクトル。
facetCenters ボロノイ面の中心点の出力ベクトル

initDelaunay()

CV_WRAP void cv::Subdiv2D::initDelaunay ( Rect rect )

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

引数
rect 細分化された部分に追加されるすべての2Dポイントを含む矩形を作成します。

insert() [1/2]

CV_WRAP void cv::Subdiv2D::insert ( const std::vector< Point2f > & ptvec )

複数の点をドロネー三角錐に挿入します。

引数
ptvec 挿入する点。

この関数は、点のベクトルを細分割に挿入し、細分割のトポロジーを適切に変更します。

insert() [2/2]

CV_WRAP int cv::Subdiv2D::insert ( Point2f pt )

ドロネー三角錐に単一の点を挿入します。

引数
pt 点を挿入します。

この関数は,細分化された領域に1つの点を挿入し,細分化されたトポロジーを適切に変更します.同じ座標の点が既に存在する場合は,新しい点は追加されません.

戻り値
その点のID。
覚え書き
点が指定された三角測量の範囲外にある場合、ランタイムエラーが発生します。

locate()

CV_WRAP int cv::Subdiv2D::locate ( Point2f pt,
CV_OUT int & edge,
CV_OUT int & vertex
)

Delaunay Triangulation内の点の位置を返します。

引数
pt 位置を決める点。
edge 点が属する、または点の右側に位置する出力辺。
vertex 入力点が一致する出力頂点(オプション).

この関数は,入力点を細分化された領域内に配置し,三角形の辺または頂点の1つを与えます.

戻り値
点の位置について,以下の5つのケースのいずれかを指定する整数です.
  • その点は、あるファセットの中に入ります。この関数はPTLOC_INSIDEを返し,edge にはその面の辺の1つが入ります.
  • 点がエッジの上に落ちる。この関数はPTLOC_ON_EDGEを返し,edge はこの辺を含みます.
  • その点は、細分化された頂点の1つと一致します。この関数はPTLOC_VERTEXを返し, vertex には,その頂点へのポインタが入ります.
  • その点は,細分化された参照矩形の外側にあります.この関数はPTLOC_OUTSIDE_RECTを返し、ポインターは満たされません。
  • 入力引数の1つが無効です。ランタイムエラーが発生するか、サイレントまたは「親」エラー処理モードが選択されている場合はPTLOC_ERRORが返されます。

nextEdge()

CV_WRAP int cv::Subdiv2D::nextEdge ( int edge ) const

エッジの原点を中心とした次のエッジを返します。

引数
edge 細分化されたエッジの ID。
戻り値
辺の原点を中心とした次の辺のIDである整数:上の図でeが入力辺の場合、eOnext)。

rotateEdge()

CV_WRAP int cv::Subdiv2D::rotateEdge ( int edge,
int rotate
) const

同じquad-edgeの別の辺を返します。

引数
edge 細分化されたエッジの ID。
rotate 入力辺と同じquad-edgeのどの辺を返すかを指定するパラメータ。次のような値が考えられます。
  • 0 - 入力辺 ( e が入力辺の場合,下の図の e )
  • 1 - 回転した辺 ( eRot )
  • 2 - 逆転された辺(逆転されたe(緑))。
  • 3 - 逆に回転された辺(逆eRot(緑))。
戻り値
入力辺と同じquad-edgeの辺IDの1つ。

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