ホームページ > 記事 > テクノロジー周辺機器 > OpenCV および関連メソッドの CvType のさまざまなパラメーターの意味を理解する
この記事は Java 環境に基づいており、OpenCV 4.6.0v で Mat オブジェクトを作成するときに渡される CvType パラメーターを紹介します。
CvType.CV_8UCX、CvType.CV_8SCX、CvType.CV_16UCX、CvType.CV_16SCX、およびその他の
パラメーターの役割と意味がよく理解できない場合。
したがって、この記事は、OpenCV Mat におけるチャネルの役割を理解するのに役立ちます。
次のコンテンツは OpenCV SDK 4.6.0v
この型は主に Mat のデータ型を定義するために使用されます。一般的な使用シナリオは、マットの作成時に定義することです。
それでは、CvType タイプではどのようなパラメーターが定義されているのでしょうか?非常に簡単に言うと、Mat 内の画像データの 2 つの基本インジケーターを決定します。
チャネルの概念については、以前の記事 https://zinyan.com/?p=493 で紹介しました。チャネルの概念についてよくわからない場合は、前の記事を読んでください。
CvType ソース コードから、OpenCV が 8 つの深さパラメーターを定義していることがわかります。
public static final int CV_8U = 0, CV_8S = 1, CV_16U = 2, CV_16S = 3, CV_32S = 4, CV_32F = 5, CV_64F = 6, CV_16F = 7;
上記の名前の 8U、8S、16U、16S、32S、64F、16F などの前の数字はビット数を表します
つまり、8bite、 16バイト、32バイト、64バイト。値の範囲を定義するために使用され、次の文字 U、S、F は記号と精度を表します。
したがって、次の定義を組み合わせることで理解できます:
# #CV_8U : パラメータの値の範囲 0 ~ 255 を表す 8 ビットの正の整数です。
OpenCV 定義では、チャネルの最大数は 4 で、最小は 1 です。これはコードに反映されており、これはコードで定義されている C1、C2 です。 CvType クラス。C3、C4。2.2 チャネル
C1: シングル チャネルを表します
//zinyan:创建了一个4*4尺寸的图片。每个像素点存储了一个double[1]的数组,该数组中值的范围为0~255 Mat mat = new Mat(4, 4, CvType.CV_8UC1); //通常用来表示灰度图或黑白图 //zinyan:创建了一个5*5尺寸的图片。每个像素点存储了一个double[3]的数组,该数组中值的范围为0~255 Mat mat1 = new Mat(5, 5, CvType.CV_8UC3); //通常用来表示彩色图 //zinyan:创建了一个6*6尺寸的图片。每个像素点存储了一个double[3]的数组,该数组中值的范围为0~65535 Mat mat1 = new Mat(6, 6, CvType.CV_16UC3); //通常用来表示彩色图,颜色值范围更广。To要約すると、CvType 定義されているのは、Mat 内のデータ ストレージのタイプです。 は、Mat が保存するピクセル値の数と各ピクセル値の範囲を定義します。 Mat のさまざまなアルゴリズムが各ピクセルの値を処理するためです。数値を処理して計算を実行するには、各数値の値の範囲をアルゴリズムに伝える必要があります。 3. その他外部からマットを渡された場合。 Mat チャンネルの数と各値の値の範囲はどのように決定すればよいでしょうか? CvType は、型 type を通じて対応する型値に変換できる関連クエリ メソッドを提供します。 例は次のとおりです。
Mat mat = new Mat(4, 4, CvType.CV_8UC3); int depth = CvType.depth(mat.type()); //输出结果值为 0 == CvType.CV_8U Mat mat1 = new Mat(4, 4, CvType.CV_16SC1); depth = CvType.depth(mat1.type()); //输出结果值为 3 == CvType.CV_16Sさらに、クエリを実行することもできます。チャンネル数。 うわー
CvType.CV_USRTYPE1 の値はすでに CV_16F と同等です。したがって、このパラメータにも @deprecated アノテーションが付けられます。放棄されたことを表します
使用しないことをお勧めします。
CvType の他のメソッドは比較的理解しやすいです。最後に、public static Final int ELEM_SIZE(int type) メソッドがあります。
このメソッドは、型の値を渡します。これは、いわゆる CvType.CV_8UC1 およびその他のパラメーター値です。
この場合、返されるのは int 変数です。
このメソッドによって返される変数は、各チャネルのパラメータのバイト数を表します。 1 バイトは 8 ビットを表し、8 ビットです。
したがって、CV_8U、CV_8S の場合は、チャネル番号を直接返すだけです。
16 ビット データの場合は 2* チャネル、32 ビット データの場合は 4* チャネル、64 ビット データの場合は 8* チャネルを返す必要があります。
これで、OpenCV の CvType の紹介は終わりです。
使用中に CvType に関するエラーが発生した場合。したがって、ほとんどの場合、CvType に慣れていないことが原因です。
または、チャネルと深度の要件を持つアルゴリズムがエラーを引き起こすために使用されます。
以上がOpenCV および関連メソッドの CvType のさまざまなパラメーターの意味を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。