画像をIpl形式で読み取ってから、マット形式に変換しています。次に、画像の行、列、チャネル、および深度の数を表示しようとします。最初の3つの結果は期待どおりですが、深さの結果は次のとおりです。
コード行:cout << "" << "Depth =" <
結果:深さ= 0
誰かがこれが何を意味するのか教えてもらえますか?
深さはフラグ(#defined int in types_c.h
)であり、印刷するには次のように使用します。
const char* depthToStr(int depth) {
switch(depth){
case CV_8U: return "unsigned char";
case CV_8S: return "char";
case CV_16U: return "unsigned short";
case CV_16S: return "short";
case CV_32S: return "int";
case CV_32F: return "float";
case CV_64F: return "double";
}
return "invalid type!";
}
次のように使用します。cout << "depth = " << depthToStr(mat.depth()) << endl;
ドキュメントはそれが何を意味するかを教えてくれます:
このメソッドは、マトリックス要素の深さの識別子(個々のチャネルのタイプ)を返します。たとえば、16ビットの符号付き3チャネル配列の場合、メソッドはCV_16Sを返します。
あなたはそれをチェックするべきです、それは非常に便利です。