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

詳細説明

名前空間

namespace  cv::traits
 

クラス

class  cv::GeneralizedHough
 一般化ハフ変換を用いてグレースケール画像中の任意のテンプレートを検出する 詳細...
 
class  cv::GeneralizedHoughBallard
 一般化ハフ変換を用いてグレースケール画像中の任意のテンプレートを検出する 詳細...
 
class  cv::GeneralizedHoughGuil
 一般化ハフ変換を用いてグレースケール画像中の任意のテンプレートを検出する 詳細...
 
class  cv::Moments
 cv::moments が返す構造体 続き...
 

列挙型

enum  cv::ConnectedComponentsAlgorithmsTypes {
  cv::CCL_DEFAULT = -1 ,
  cv::CCL_WU = 0 ,
  cv::CCL_GRANA = 1 ,
  cv::CCL_BOLELLI = 2 ,
  cv::CCL_SAUF = 3 ,
  cv::CCL_BBDT = 4 ,
  cv::CCL_SPAGHETTI = 5
}
 連結成分アルゴリズム 詳細...
 
enum  cv::ConnectedComponentsTypes {
  cv::CC_STAT_LEFT = 0 ,
  cv::CC_STAT_TOP = 1 ,
  cv::CC_STAT_WIDTH = 2 ,
  cv::CC_STAT_HEIGHT = 3 ,
  cv::CC_STAT_AREA = 4
}
 連結成分の統計情報 詳細...
 
enum  cv::ContourApproximationModes {
  cv::CHAIN_CODE = 0 ,
  cv::CHAIN_APPROX_NONE = 1 ,
  cv::CHAIN_APPROX_SIMPLE = 2 ,
  cv::CHAIN_APPROX_TC89_L1 = 3 ,
  cv::CHAIN_APPROX_TC89_KCOS = 4 ,
  cv::LINK_RUNS = 5
}
 輪郭近似アルゴリズム 詳細...
 
enum  cv::RetrievalModes {
  cv::RETR_EXTERNAL = 0 ,
  cv::RETR_LIST = 1 ,
  cv::RETR_CCOMP = 2 ,
  cv::RETR_TREE = 3 ,
  cv::RETR_FLOODFILL = 4
}
 輪郭取得アルゴリズムのモード 詳細...
 
enum  cv::ShapeMatchModes {
  cv::CONTOURS_MATCH_I1 =1 ,
  cv::CONTOURS_MATCH_I2 =2 ,
  cv::CONTOURS_MATCH_I3 =3
}
 形状マッチングの手法。 詳細...
 

関数

int cv::connectedComponents (InputArray image, OutputArray labels, int connectivity, int ltype, int ccltype)
 ブール画像の連結成分ラベリング画像を計算する
 
int cv::connectedComponents (InputArray image, OutputArray labels, int connectivity=8, int ltype=CV_32S)
 
int cv::connectedComponentsWithStats (InputArray image, OutputArray labels, OutputArray stats, OutputArray centroids, int connectivity, int ltype, int ccltype)
 ブール画像の連結成分ラベリング画像を計算し、各ラベルごとの統計情報も出力する
 
int cv::connectedComponentsWithStats (InputArray image, OutputArray labels, OutputArray stats, OutputArray centroids, int connectivity=8, int ltype=CV_32S)
 
Ptr< GeneralizedHoughBallardcv::createGeneralizedHoughBallard ()
 cv::GeneralizedHoughBallard クラスへのスマートポインタを生成して初期化する。
 
Ptr< GeneralizedHoughGuilcv::createGeneralizedHoughGuil ()
 cv::GeneralizedHoughGuil クラスへのスマートポインタを生成して初期化する。
 
void cv::findContours (InputArray image, OutputArrayOfArrays contours, int mode, int method, Point offset=Point())
 
void cv::findContours (InputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point())
 2値画像から輪郭を検出する。
 
void cv::findContoursLinkRuns (InputArray image, OutputArrayOfArrays contours)
 これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは受け取る引数のみが異なる。
 
void cv::findContoursLinkRuns (InputArray image, OutputArrayOfArrays contours, OutputArray hierarchy)
 linkランアルゴリズムを用いて輪郭を検出する。
 

列挙型詳解

◆ ConnectedComponentsAlgorithmsTypes

#include <opencv2/imgproc.hpp>

連結成分アルゴリズム

列挙値
CCL_DEFAULT 
Python: cv.CCL_DEFAULT

8連結に対しては Spaghetti [33] アルゴリズム、4連結に対しては Spaghetti4C [34] アルゴリズム。

CCL_WU 
Python: cv.CCL_WU

8連結に対するSAUF [310] アルゴリズム、4連結に対するSAUFアルゴリズム。[32] で説明されている並列実装がSAUFで利用できる。

CCL_GRANA 
Python: cv.CCL_GRANA

8連結に対するBBDT [113] アルゴリズム、4連結に対するSAUFアルゴリズム。[32] で説明されている並列実装がBBDTとSAUFの両方で利用できる。

CCL_BOLELLI 
Python: cv.CCL_BOLELLI

8連結に対しては Spaghetti [33] アルゴリズム、4連結に対しては Spaghetti4C [34] アルゴリズム。[32] で説明されている並列実装が Spaghetti と Spaghetti4C の両方で利用可能である。

CCL_SAUF 
Python: cv.CCL_SAUF

CCL_WU と同じ。第一著者の名前(CCL_WU)よりも、アルゴリズム名のフラグ(CCL_SAUF)を使用することが望ましい。

CCL_BBDT 
Python: cv.CCL_BBDT

CCL_GRANA と同じ。第一著者の名前(CCL_GRANA)よりも、アルゴリズム名のフラグ(CCL_BBDT)を使用することが望ましい。

CCL_SPAGHETTI 
Python: cv.CCL_SPAGHETTI

CCL_BOLELLI と同じ。第一著者の名前(CCL_BOLELLI)よりも、アルゴリズム名のフラグ(CCL_SPAGHETTI)を使用することが望ましい。

◆ ConnectedComponentsTypes

#include <opencv2/imgproc.hpp>

連結成分の統計情報

列挙値
CC_STAT_LEFT 
Python: cv.CC_STAT_LEFT

水平方向のバウンディングボックスの開始位置(その位置を含む)を表す最も左の (x) 座標。

CC_STAT_TOP 
Python: cv.CC_STAT_TOP

垂直方向のバウンディングボックスの開始位置(その位置を含む)を表す最も上の (y) 座標。

CC_STAT_WIDTH 
Python: cv.CC_STAT_WIDTH

バウンディングボックスの水平方向のサイズ。

CC_STAT_HEIGHT 
Python: cv.CC_STAT_HEIGHT

バウンディングボックスの垂直方向のサイズ。

CC_STAT_AREA 
Python: cv.CC_STAT_AREA

連結成分の総面積(ピクセル単位)。

◆ ContourApproximationModes

#include <opencv2/imgproc.hpp>

輪郭近似アルゴリズム

列挙値
CHAIN_CODE 
Python: cv.CHAIN_CODE

未定 (TBD)

CHAIN_APPROX_NONE 
Python: cv.CHAIN_APPROX_NONE

すべての輪郭点を漏れなく格納する。すなわち、輪郭上の連続する任意の2点 (x1,y1) と (x2,y2) は、水平・垂直・斜めのいずれかで隣接しており、max(abs(x1-x2),abs(y2-y1))==1 を満たす。

CHAIN_APPROX_SIMPLE 
Python: cv.CHAIN_APPROX_SIMPLE

水平・垂直・斜めの線分を圧縮し、それらの端点のみを残す。例えば、上向きの直立した矩形の輪郭は4点で符号化される。

CHAIN_APPROX_TC89_L1 
Python: cv.CHAIN_APPROX_TC89_L1

Teh-Chinチェーン近似アルゴリズム [275] のいずれかの種類を適用する

CHAIN_APPROX_TC89_KCOS 
Python: cv.CHAIN_APPROX_TC89_KCOS

Teh-Chinチェーン近似アルゴリズム [275] のいずれかの種類を適用する

LINK_RUNS 
Python: cv.LINK_RUNS

未定 (TBD)

◆ RetrievalModes

#include <opencv2/imgproc.hpp>

輪郭取得アルゴリズムのモード

列挙値
RETR_EXTERNAL 
Python: cv.RETR_EXTERNAL

最も外側の輪郭のみを取得する。すべての輪郭について hierarchy[i][2]=hierarchy[i][3]=-1 を設定する。

RETR_LIST 
Python: cv.RETR_LIST

階層関係を構築せずに、すべての輪郭を取得する。

RETR_CCOMP 
Python: cv.RETR_CCOMP

すべての輪郭を取得し、2レベルの階層に整理する。トップレベルには成分の外側の境界があり、第2レベルには穴の境界がある。連結成分の穴の内側にさらに別の輪郭がある場合でも、それはトップレベルに置かれる。

RETR_TREE 
Python: cv.RETR_TREE

すべての輪郭を取得し、入れ子になった輪郭の完全な階層を再構築する。

RETR_FLOODFILL 
Python: cv.RETR_FLOODFILL

◆ ShapeMatchModes

#include <opencv2/imgproc.hpp>

形状マッチングの手法。

\(A\) はobject1を、\(B\) はobject2を表す

\(\begin{array}{l} m^A_i = \mathrm{sign} (h^A_i) \cdot \log{h^A_i} \\ m^B_i = \mathrm{sign} (h^B_i) \cdot \log{h^B_i} \end{array}\)

また \(h^A_i, h^B_i\) はそれぞれ \(A\) と \(B\) のHuモーメントである。

列挙値
CONTOURS_MATCH_I1 
Python: cv.CONTOURS_MATCH_I1

\[I_1(A,B) = \sum _{i=1...7} \left | \frac{1}{m^A_i} - \frac{1}{m^B_i} \right |\]

CONTOURS_MATCH_I2 
Python: cv.CONTOURS_MATCH_I2

\[I_2(A,B) = \sum _{i=1...7} \left | m^A_i - m^B_i \right |\]

CONTOURS_MATCH_I3 
Python: cv.CONTOURS_MATCH_I3

\[I_3(A,B) = \max _{i=1...7} \frac{ \left| m^A_i - m^B_i \right| }{ \left| m^A_i \right| }\]

関数詳解

◆ connectedComponents() [1/2]

int cv::connectedComponents ( InputArray image,
OutputArray labels,
int connectivity,
int ltype,
int ccltype )
Python:
cv.connectedComponents(image[, labels[, connectivity[, ltype]]]) -> retval, labels
cv.connectedComponentsWithAlgorithm(image, connectivity, ltype, ccltype[, labels]) -> retval, labels

#include <opencv2/imgproc.hpp>

ブール画像の連結成分ラベリング画像を計算する

4連結または8連結の画像。ラベルの総数N(0が背景ラベルを表す [0, N-1])を返す。ltype は出力ラベル画像の型を指定する。これはラベルの総数、あるいは入力画像の総ピクセル数に基づいて重要な検討事項となる。ccltype は使用する連結成分ラベリングアルゴリズムを指定する。現在は Bolelli (Spaghetti) [33]、Grana (BBDT) [113]、Wu (SAUF) [310] のアルゴリズムがサポートされている。詳細は ConnectedComponentsAlgorithmsTypes を参照。SAUFアルゴリズムはラベルを行優先順に並べるが、SpaghettiとBBDTはそうではない点に注意する。この関数は、許可された並列フレームワークが少なくとも1つ有効であり、かつ画像の行数が getNumberOfCPUs が返す値の少なくとも2倍である場合に、アルゴリズムの並列版を使用する。

引数
imageラベル付けの対象となる8ビットシングルチャンネル画像
labelsラベル付けされた出力画像
connectivity8連結の場合は 8、4連結の場合は 4
ltype出力画像のラベル型。現在は CV_32S と CV_16U がサポートされている。
ccltype連結成分アルゴリズムの種類(ConnectedComponentsAlgorithmsTypes を参照)。

◆ connectedComponents() [2/2]

int cv::connectedComponents ( InputArray image,
OutputArray labels,
int connectivity = 8,
int ltype = CV_32S )
Python:
cv.connectedComponents(image[, labels[, connectivity[, ltype]]]) -> retval, labels
cv.connectedComponentsWithAlgorithm(image, connectivity, ltype, ccltype[, labels]) -> retval, labels

#include <opencv2/imgproc.hpp>

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

引数
imageラベル付けの対象となる8ビットシングルチャンネル画像
labelsラベル付けされた出力画像
connectivity8連結の場合は 8、4連結の場合は 4
ltype出力画像のラベル型。現在は CV_32S と CV_16U がサポートされている。

◆ connectedComponentsWithStats() [1/2]

int cv::connectedComponentsWithStats ( InputArray image,
OutputArray labels,
OutputArray stats,
OutputArray centroids,
int connectivity,
int ltype,
int ccltype )
Python:
cv.connectedComponentsWithStats(image[, labels[, stats[, centroids[, connectivity[, ltype]]]]]) -> retval, labels, stats, centroids
cv.connectedComponentsWithStatsWithAlgorithm(image, connectivity, ltype, ccltype[, labels[, stats[, centroids]]]) -> retval, labels, stats, centroids

#include <opencv2/imgproc.hpp>

ブール画像の連結成分ラベリング画像を計算し、さらに各ラベルの統計情報を出力する

4連結または8連結の画像。ラベルの総数N(0が背景ラベルを表す [0, N-1])を返す。ltype は出力ラベル画像の型を指定する。これはラベルの総数、あるいは入力画像の総ピクセル数に基づいて重要な検討事項となる。ccltype は使用する連結成分ラベリングアルゴリズムを指定する。現在は Bolelli (Spaghetti) [33]、Grana (BBDT) [113]、Wu (SAUF) [310] のアルゴリズムがサポートされている。詳細は ConnectedComponentsAlgorithmsTypes を参照。SAUFアルゴリズムはラベルを行優先順に並べるが、SpaghettiとBBDTはそうではない点に注意する。この関数は、許可された並列フレームワークが少なくとも1つ有効であり、かつ画像の行数が getNumberOfCPUs が返す値の少なくとも2倍である場合に、アルゴリズムの並列版(統計情報を含む)を使用する。

引数
imageラベル付けの対象となる8ビットシングルチャンネル画像
labelsラベル付けされた出力画像
stats背景ラベルを含む各ラベルの統計出力。統計は stats(label, COLUMN) でアクセスする。COLUMN は統計量を選択する ConnectedComponentsTypes のいずれかである。データ型は CV_32S である。
centroids背景ラベルを含む各ラベルの重心出力。重心は x については centroids(label, 0)、y については centroids(label, 1) でアクセスする。データ型は CV_64F である。
connectivity8連結の場合は 8、4連結の場合は 4
ltype出力画像のラベル型。現在は CV_32S と CV_16U がサポートされている。
ccltype連結成分アルゴリズムの種類(ConnectedComponentsAlgorithmsTypes を参照)。

◆ connectedComponentsWithStats() [2/2]

int cv::connectedComponentsWithStats ( InputArray image,
OutputArray labels,
OutputArray stats,
OutputArray centroids,
int connectivity = 8,
int ltype = CV_32S )
Python:
cv.connectedComponentsWithStats(image[, labels[, stats[, centroids[, connectivity[, ltype]]]]]) -> retval, labels, stats, centroids
cv.connectedComponentsWithStatsWithAlgorithm(image, connectivity, ltype, ccltype[, labels[, stats[, centroids]]]) -> retval, labels, stats, centroids

#include <opencv2/imgproc.hpp>

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

引数
imageラベル付けの対象となる8ビットシングルチャンネル画像
labelsラベル付けされた出力画像
stats背景ラベルを含む各ラベルの統計出力。統計は stats(label, COLUMN) でアクセスする。COLUMN は統計量を選択する ConnectedComponentsTypes のいずれかである。データ型は CV_32S である。
centroids背景ラベルを含む各ラベルの重心出力。重心は x については centroids(label, 0)、y については centroids(label, 1) でアクセスする。データ型は CV_64F である。
connectivity8連結の場合は 8、4連結の場合は 4
ltype出力画像のラベル型。現在は CV_32S と CV_16U がサポートされている。

◆ createGeneralizedHoughBallard()

Ptr< GeneralizedHoughBallard > cv::createGeneralizedHoughBallard ( )
Python:
cv.createGeneralizedHoughBallard() -> retval

#include <opencv2/imgproc.hpp>

cv::GeneralizedHoughBallard クラスへのスマートポインタを生成し、初期化する。

◆ createGeneralizedHoughGuil()

Ptr< GeneralizedHoughGuil > cv::createGeneralizedHoughGuil ( )
Python:
cv.createGeneralizedHoughGuil() -> retval

#include <opencv2/imgproc.hpp>

cv::GeneralizedHoughGuil クラスへのスマートポインタを生成し、初期化する。

◆ findContours() [1/2]

void cv::findContours ( InputArray image,
OutputArrayOfArrays contours,
int mode,
int method,
Point offset = Point() )
Python:
cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy

#include <opencv2/imgproc.hpp>

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

◆ findContours() [2/2]

void cv::findContours ( InputArray image,
OutputArrayOfArrays contours,
OutputArray hierarchy,
int mode,
int method,
Point offset = Point() )
Python:
cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy

#include <opencv2/imgproc.hpp>

2値画像内の輪郭を検出する。

この関数は二値画像から輪郭を取得する。輪郭は形状解析や物体検出・認識に有用なツールである。OpenCVのサンプルディレクトリにある squares.cpp を参照のこと。

覚え書き
OpenCV 4.14以降、mode が RETR_LIST で階層構造が要求されない場合、この関数は自動的にTRUCO並列アルゴリズム [207](輪郭抽出のためのスケーラブルでロックフリーな手法)を使用する。それ以外のすべての場合では、逐次的な [267] アルゴリズムが使用される。
OpenCV 3.2 以降、入力画像はこの関数によって変更されない。
引数
image入力元の8ビットシングルチャンネル画像。非ゼロのピクセルは 1 として扱われる。ゼロのピクセルは 0 のままなので、画像は2値として扱われる。グレースケールやカラー画像から2値画像を作成するには、compareinRangethresholdadaptiveThresholdCanny などを使用できる。mode が RETR_CCOMP または RETR_FLOODFILL に等しい場合、入力はラベルの32ビット整数画像(CV_32SC1)でもよい。
contours検出された輪郭。各輪郭は点のベクトルとして格納される(例: std::vector<std::vector<cv::Point> >)。
hierarchy画像のトポロジー情報を含む省略可能な出力ベクトル(例: std::vector<cv::Vec4i>)。輪郭の数と同じ数の要素を持つ。各 i 番目の輪郭 contours[i] について、要素 hierarchy[i][0]、hierarchy[i][1]、hierarchy[i][2]、hierarchy[i][3] には、それぞれ同一階層の次の輪郭・前の輪郭、最初の子輪郭、親輪郭の contours における0始まりのインデックスが設定される。輪郭 i に次・前・親・入れ子の輪郭が存在しない場合、hierarchy[i] の対応する要素は負になる。
覚え書き
Python では、hierarchy はトップレベルの配列の中にネストされている。i 番目の輪郭の階層要素にアクセスするには hierarchy[0][i] を使用する。
引数
mode輪郭の検索モード。RetrievalModes を参照
method輪郭の近似手法。ContourApproximationModes を参照
offset各輪郭点をシフトする省略可能なオフセット。輪郭を画像のROIから抽出し、画像全体の文脈で解析する場合に有用である。

◆ findContoursLinkRuns() [1/2]

void cv::findContoursLinkRuns ( InputArray image,
OutputArrayOfArrays contours )
Python:
cv.findContoursLinkRuns(image[, contours[, hierarchy]]) -> contours, hierarchy
cv.findContoursLinkRuns(image[, contours]) -> contours

#include <opencv2/imgproc.hpp>

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

◆ findContoursLinkRuns() [2/2]

void cv::findContoursLinkRuns ( InputArray image,
OutputArrayOfArrays contours,
OutputArray hierarchy )
Python:
cv.findContoursLinkRuns(image[, contours[, hierarchy]]) -> contours, hierarchy
cv.findContoursLinkRuns(image[, contours]) -> contours

#include <opencv2/imgproc.hpp>

link runs アルゴリズムを用いて輪郭を検出する。

この関数は cv::findContours とは異なるアルゴリズムを実装している:

  • 内部で一時画像を確保しないため、メモリ消費量が削減される
  • CV_8UC1 画像のみをサポートする
  • 2 レベルの階層 (RETR_CCOMP モード) のみを出力する
  • CHAIN_APPROX_SIMPLE 以外の近似変更をサポートしない。その他のすべての点で、この関数は cv::findContours と互換性がある。