1. はじめに
この記事は 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
2 に基づいています。CvType
この型は主に Mat のデータ型を定義するために使用されます。一般的な使用シナリオは、マットの作成時に定義することです。
それでは、CvType タイプではどのようなパラメーターが定義されているのでしょうか?非常に簡単に言うと、Mat 内の画像データの 2 つの基本インジケーターを決定します。
- チャネル: つまり、mat.channels() によって返される値は 3 つのパラメーター 1 ~ 4 のみです。
- Depth 深さ: つまり、マット内の各ピクセル パラメーターの格納値の範囲です。値は各チャネルの byte[] 配列に格納され、各配列の値の範囲は深さによって決まります。
チャネルの概念については、以前の記事 https://zinyan.com/?p=493 で紹介しました。チャネルの概念についてよくわからない場合は、前の記事を読んでください。
2.1 深さ-深さ
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 は記号と精度を表します。
- U: 符号なし整数、符号なし整数、正の整数も #S: 符号付き整数、符号付き整数 (負と正の数を含む、すべての整数)
- # F:float、単精度浮動小数点型、つまり小数点付き。 (追記: Float 型自体は負の数をサポートしています)
したがって、次の定義を組み合わせることで理解できます:
# #CV_8U : パラメータの値の範囲 0 ~ 255 を表す 8 ビットの正の整数です。
- CV_8S: パラメータの値の範囲 -128 を表す 8 ビットの正および負の数です。 ~127
- CV_16U : パラメータの値の範囲を表す 16 ビットの正の整数です。 0~65535
- CV_16S: パラメータの値の範囲を表す 16 ビットの正および負の数値です。パラメータの値の範囲 -32768 ~ 32767
- CV_16F : パラメータの値の範囲を表す 16 ビット浮動小数点数です -65504 ~ 65504
- CV_32S: 32 です- パラメーターの値の範囲を表すビット正の整数 2147483648~2147483647
- CV_32F: パラメーター値の範囲 1.18x10^-38^~3.40x10^38^ を表す 32 ビット浮動小数点数です。
- CV_64F: これは 64 ビット浮動小数点数で、パラメーター値の範囲 2.23x10^- 308^~1.79x10^308^
- PS: について浮動小数点数の精度と範囲の問題については、検索して詳細を確認できます。上記のパラメータ範囲は、ネットワーク サマリーを通じて取得されます。
OpenCV 定義では、チャネルの最大数は 4 で、最小は 1 です。これはコードに反映されており、これはコードで定義されている C1、C2 です。 CvType クラス。C3、C4。2.2 チャネル
C1: シングル チャネルを表します
- C2: デュアル チャネルを表します
- C3: ティーから
- C4: 4 つのチャネルを表します
- OpenCV では、ピクセルのカラー値は double[] 倍精度浮動小数点配列に格納されます。
//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さらに、クエリを実行することもできます。チャンネル数。 うわー
3.1 非推奨の CV_USRTYPE1
CvType.CV_USRTYPE1 の値はすでに CV_16F と同等です。したがって、このパラメータにも @deprecated アノテーションが付けられます。放棄されたことを表します
使用しないことをお勧めします。
3.2 ELEM_SIZE メソッド
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* チャネルを返す必要があります。
4. 概要
これで、OpenCV の CvType の紹介は終わりです。
使用中に CvType に関するエラーが発生した場合。したがって、ほとんどの場合、CvType に慣れていないことが原因です。
または、チャネルと深度の要件を持つアルゴリズムがエラーを引き起こすために使用されます。
以上がOpenCV および関連メソッドの CvType のさまざまなパラメーターの意味を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ねえ、忍者をコーディング!その日はどのようなコーディング関連のタスクを計画していますか?このブログにさらに飛び込む前に、コーディング関連のすべての問題について考えてほしいです。 終わり? - &#8217を見てみましょう

食品の準備を強化するAI まだ初期の使用中ですが、AIシステムは食品の準備にますます使用されています。 AI駆動型のロボットは、ハンバーガーの製造、SAの組み立てなど、食品の準備タスクを自動化するためにキッチンで使用されています

導入 Python関数における変数の名前空間、スコープ、および動作を理解することは、効率的に記述し、ランタイムエラーや例外を回避するために重要です。この記事では、さまざまなASPを掘り下げます

導入 鮮やかな絵画や彫刻に囲まれたアートギャラリーを歩くことを想像してください。さて、各ピースに質問をして意味のある答えを得ることができたらどうでしょうか?あなたは尋ねるかもしれません、「あなたはどんな話を言っていますか?

製品のケイデンスを継続して、今月MediaTekは、新しいKompanio UltraやDimenity 9400を含む一連の発表を行いました。これらの製品は、スマートフォン用のチップを含むMediaTekのビジネスのより伝統的な部分を埋めます

#1 GoogleはAgent2Agentを起動しました 物語:月曜日の朝です。 AI駆動のリクルーターとして、あなたはより賢く、難しくありません。携帯電話の会社のダッシュボードにログインします。それはあなたに3つの重要な役割が調達され、吟味され、予定されていることを伝えます

私はあなたがそうであるに違いないと思います。 私たちは皆、精神障害がさまざまな心理学の用語を混ぜ合わせ、しばしば理解できないか完全に無意味であることが多い、さまざまなおしゃべりで構成されていることを知っているようです。 FOを吐き出すために必要なことはすべてです

今週公開された新しい研究によると、2022年に製造されたプラスチックの9.5%のみがリサイクル材料から作られていました。一方、プラスチックは埋め立て地や生態系に積み上げられ続けています。 しかし、助けが近づいています。エンジンのチーム


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい
