Opencv cv::Matデータ型まとめ
次の2つのシーンでOpenCVを使用する場合は、行列要素のデータ型を事前に知る必要があります. atメソッドを使用してデータ要素にアクセスする場合、データ型 を示す.が数値演算をする場合、例えば整数除算か浮動小数点数除算か.
cv::Matクラスのオブジェクトには、行列要素のデータ型を返すメンバー関数type()があります.
戻り値はintタイプであり、異なる戻り値は異なるタイプを表し、具体的な対応関係は以下の通りである.
を選択します.
C1
C2
C3
C4
CV_8U
0
8
16
24
CV_8U
1
9
17
25
CV_8U
2
10
18
26
CV_8U
3
11
19
27
CV_8U
4
12
20
28
CV_8U
5
13
21
29
CV_8U
6
14
22
30
ヘッダのC 1,C 2,C 3,C 4は、チャネル数を指し、例えば、階調画像は1チャネルしかなく、C 1である. JPEG形式のRGBカラー画像は、3チャネル、C 3 である. PNG形式のカラー画像は、RGB 3チャネルの他に透明度チャネルが1つあるので、C 4である.
数値計算前にデータ型を明確にするためだけなら、ここを見ればいいのです
atメソッドを使用してデータ要素にアクセスする場合は、次の手順に従います.
単一チャネルを例にとると,at法はCV_ではなくucharのようなデータ型を受け入れるからである.8U.
既知のチャネル数と各チャネルデータ型の場合、atメソッドに指定されたデータ型は以下の表に示す.
を選択します.
C1
C2
C3
C4
C6
uchar
uchar
cv::Vec2b
cv::Vec3b
cv::Vec4b
short
short
cv::Vec2s
cv::Vec3s
cv::Vec4b
int
int
cv::Vec2i
cv::Vec3i
cv::Vec4i
float
float
cv::Vec2f
cv::Vec3f
cv::Vec4f
cv::Vec6f
double
double
cv::Vec2d
cv::Vec3d
cv::Vec4d
cv::Vec6f
これで、atを使用して画像のピクセルにアクセスできます.
上記データ型および取値範囲
値
特定のタイプ
値範囲
CV_8U
8ビット符号なし整数
(0……255)
CV_8S
8ビット符号整数
(-128……127)
CV_16U
16ビット符号なし整数
(0……65535)
CV_16S
16ビット符号整数
(-32768……32767)
CV_32S
32ビット符号整数
(-2147483648……2147483647)
CV_32F
32ビット浮動小数点数
(-FLT_MAX ………FLT_MAX,INF,NAN)
CV_64F
64ビット浮動小数点数
(-DBL_MAX ……….DBL_MAX,INF,NAN)
Vecクラスの定義:
参照リンク:https://www.jianshu.com/p/204f292937bb
cv::Matクラスのオブジェクトには、行列要素のデータ型を返すメンバー関数type()があります.
戻り値はintタイプであり、異なる戻り値は異なるタイプを表し、具体的な対応関係は以下の通りである.
を選択します.
C1
C2
C3
C4
CV_8U
0
8
16
24
CV_8U
1
9
17
25
CV_8U
2
10
18
26
CV_8U
3
11
19
27
CV_8U
4
12
20
28
CV_8U
5
13
21
29
CV_8U
6
14
22
30
ヘッダのC 1,C 2,C 3,C 4は、チャネル数を指し、例えば、
数値計算前にデータ型を明確にするためだけなら、ここを見ればいいのです
atメソッドを使用してデータ要素にアクセスする場合は、次の手順に従います.
単一チャネルを例にとると,at法はCV_ではなくucharのようなデータ型を受け入れるからである.8U.
既知のチャネル数と各チャネルデータ型の場合、atメソッドに指定されたデータ型は以下の表に示す.
を選択します.
C1
C2
C3
C4
C6
uchar
uchar
cv::Vec2b
cv::Vec3b
cv::Vec4b
short
short
cv::Vec2s
cv::Vec3s
cv::Vec4b
int
int
cv::Vec2i
cv::Vec3i
cv::Vec4i
float
float
cv::Vec2f
cv::Vec3f
cv::Vec4f
cv::Vec6f
double
double
cv::Vec2d
cv::Vec3d
cv::Vec4d
cv::Vec6f
これで、atを使用して画像のピクセルにアクセスできます.
cv::Vec3b vec3b = img.at<:vec3b>(0,0);
uchar vec3b0 = img.at<:vec3b>(0,0)[0];
uchar vec3b1 = img.at<:vec3b>(0,0)[1];
uchar vec3b2 = img.at<:vec3b>(0,0)[2];
std::cout<
上記データ型および取値範囲
値
特定のタイプ
値範囲
CV_8U
8ビット符号なし整数
(0……255)
CV_8S
8ビット符号整数
(-128……127)
CV_16U
16ビット符号なし整数
(0……65535)
CV_16S
16ビット符号整数
(-32768……32767)
CV_32S
32ビット符号整数
(-2147483648……2147483647)
CV_32F
32ビット浮動小数点数
(-FLT_MAX ………FLT_MAX,INF,NAN)
CV_64F
64ビット浮動小数点数
(-DBL_MAX ……….DBL_MAX,INF,NAN)
Vecクラスの定義:
template class Vec : public Matx<_tp n=""> {...};
typedef Vec Vec2b;
typedef Vec Vec3b;
typedef Vec Vec4b;
typedef Vec Vec2s;
typedef Vec Vec3s;
typedef Vec Vec4s;
typedef Vec Vec2i;
typedef Vec Vec3i;
typedef Vec Vec4i;
typedef Vec Vec2f;
typedef Vec Vec3f;
typedef Vec Vec4f;
typedef Vec Vec6f;
typedef Vec Vec2d;
typedef Vec Vec3d;
typedef Vec Vec4d;
typedef Vec Vec6d;
参照リンク:https://www.jianshu.com/p/204f292937bb