目次
マットオブジェクトコンポジション
class CV_EXPORTS Mat
{
public:
/*..很多方法..*/
/*............*/
int flags;/*flags指定图像的颜色空间
flags > 0 3通道的彩色图像
flags = 0 灰度图像
flags < 0 不作改变
*/
int dims; /*数据的维数*/
int rows,cols; /*行和列的数量;数组超过2维时为(-1,-1)*/
uchar *data; /*指向数据*/
int * refcount; /*指针的引用计数器; 阵列指向用户分配的数据时,指针为 NULL
/* 其他成员 */
...
};
マットよく使うメンバー
1.マトリックスデータを格納するメモリ(uchar *データ)へのデータMatオブジェクト内のポインタ
2. dims行列の次元、34行列の次元は2次元、34 * 5行列の次元は3次元です
3.チャネルマトリックスチャネル、マトリックス内の各マトリックス要素が持つ値の数、たとえば、3 * 4マトリックスには12個の
要素があります。各要素に3つの値がある場合、マトリックスは次のように言われます。 3つのチャネルがあります。つまり、チャネル= 3です。カラー画像には、赤、緑、青の3つのチャネルがあるのが一般的です。4.深度深度、つまりピクセルあたりのビット数、つまりチャネルあたりのビット数。
あなたは何のOpenCVのMat.depth()で取得することは、異なるビットを表す、0から6までの数である:
列挙
{CV_8U = 0、CV_8S = 1、CV_16U = 2、CV_16S = 3、CV_32S = 4、CV_32F = 5、CV_64F = 6}、0と1は両方とも8ビットを表し、2と3は両方とも16ビットを表し、4と5は32ビットを表し、6は64ビットを表すことがわかります。
bit_depth
ビット数— 8ビット、16ビット、32ビット、64ビットを表します。
CV_8 | 32 | 64
グレースケール画像を格納するMatオブジェクトを作成する場合、この画像のサイズは幅100、高さ100です。
したがって、このグレースケール画像には10,000ピクセルがあり、メモリ空間の各ピクセルが占める空間は8ビット、8ビットです。つまり、CV_8に対応します。
同様に、CV_32は、各ピクセルが32ビットを占めることを意味します
S | U | F
S-は-signedint-signedintegerの略です
U-は-unsignedint-unsignedintegerの略です
F--表す--float ---------単精度浮動小数点
C
画像のチャンネル数
チャネル= 1:グレースケール画像–grayImg—はい—単一チャネル画像
チャネル= 3:RGBカラー画像---------はい–3チャネル画像
チャネル= 4:Alphチャネルを使用したRGB画像-はい-4チャネル画像
例:
CV_8UC3
は、8ビットの符号なし3チャネル画像です。
C番号が書き込まれていない場合、デフォルトは単一チャネルです。たとえば
、CV_8U = CV_8uC1
マットオブジェクトの作成方法
- Mat(int rows、int cols、int _type);
- Mat(サイズsize、int _type);
imshowは画像のマッピングを示しています
ロードされた画像が8ビット符号なしの場合、元の画像が表示されます。
画像が16ビット符号なしタイプ(16ビット符号なし)または32ビット整数(32ビット整数、符号付きビット)の場合は、ピクセル値を256で除算します。言い換えると、値の範囲は[0,255 x256]が[0,255]にマップされます。
画像が32ビット浮動小数点または64ビット浮動小数点の場合、ピクセル値に255を掛ける必要があります。つまり、値の範囲は[0,1]が[0,255]にマップされます。
私の理解:
これらは画像データの保存方法です。imshowを使用して表示する場合、デフォルトはCV_8表示であるため、マッピングする必要があります。元の16ビットデータは8ビットで表示されるため、画像の豊かさが失われます。(これが、Macの画像管理がWindowsの画像管理よりも優れている理由です)
8ビットは0〜255です。16ビットは、2つの8ビットが相互に接続されていることを意味します。つまり、8ビットの8ビットデータがあります。
フロートはメモリ内で4バイト、つまり32ビットを占有します
たとえば、CV_8UのグレースケールまたはBGR画像のカラーコンポーネントは0〜255の間です。直接imshowは画像を表示できます。CV_32FまたはCV_64Fの値の範囲は0〜1.0です。imshowの場合、画像は255倍されてから表示されます。