OpenCV 4.5.3(日本語機械翻訳)
|
Template "trait" class for OpenCV primitive data types. [詳解]
#include <traits.hpp>
OpenCV の基本的なデータ型に特化したテンプレート「trait」クラス.
OpenCV のプリミティブなデータ型は, unsigned char, bool, signed char, unsigned short, signed short, int, float, double のうちの1つ,あるいは,これらの型の値のタプルで,タプル内のすべての値が同じ型であるものです.CV_<bit-depth>{U|S|F}C(<number_of_channels>)の形式の識別子によって,リスト内の任意のプリミティブな型を定義することができます.例えば, uchar CV_8UC1,3要素の浮動小数点タプル CV_32FC3 などです.このようなプリミティブなデータ型の1つのインスタンスを格納することができる,普遍的な OpenCV の構造体はVec. このようなデータ型の複数のインスタンスは,std::vector に格納することができます.Mat,Mat_,SparseMat,SparseMat_などのコンテナに格納することができます.Vecインスタンスを格納できるその他のコンテナに格納できます。
のクラスはスレッドセーフではありません。DataTypeクラスは基本的に、対応するクラスにフィールドやメソッドを追加することなく、そのようなプリミティブなデータ型の説明を提供するために使用されます(実際には、C/C++のプリミティブなデータ型に何かを追加することは不可能です)。この手法はC++ではクラスの特性として知られています。これはDataTypeそれ自体が使われるのではなく、次のような特殊化されたバージョンが使われます。
このクラスの主な目的は,コンパイル時の型情報を,OpenCVと互換性のあるデータ型識別子に変換することなどです.
つまり,このような特性は,たとえデータ型が OpenCV のネイティブなものでなくても,どのデータ型を扱っているかを OpenCV に伝えるために使用されます.例えば,上述の行列 B の初期化がコンパイルされるのは,OpenCV が適切な特殊テンプレートクラスであるDataType<この機構は,一般的なアルゴリズムの実装にも役立ちます(OpenCVではこのように使用されています).