OpenCV の C++ インターフェイスでは、画像のタイプを確認するのは簡単なようです。画像がある場合はcv::Mat img = cv::imread("someImage.xyz")
、 を実行するだけですint theType = img.type()
。
ただし、予想どおり、 を呼び出すと列挙名 (例)img.type()
ではなく整数が返されます。CV_32FC1
CV_32FC1
OpenCV 列挙型の整数値がわかっている場合、列挙型名 (例 ) を出力する簡単な方法はありますか?
ベストアンサー1
私の知る限り、そのような関数は OpenCV には存在しません。
これらを取得するには、独自の関数を書いた方が良いと思います。多くのスイッチケースがありますが、これで十分だと思います。列挙は以下にあります。ここ。
編集:
これは、型を抽出するために使用できるものです。もっと効率的な方法があるのではないかと思いますが、現時点では理解できません。
std::string getImageType(int number)
{
// find type
int imgTypeInt = number%8;
std::string imgTypeString;
switch (imgTypeInt)
{
case 0:
imgTypeString = "8U";
break;
case 1:
imgTypeString = "8S";
break;
case 2:
imgTypeString = "16U";
break;
case 3:
imgTypeString = "16S";
break;
case 4:
imgTypeString = "32S";
break;
case 5:
imgTypeString = "32F";
break;
case 6:
imgTypeString = "64F";
break;
default:
break;
}
// find channel
int channel = (number/8) + 1;
std::stringstream type;
type<<"CV_"<<imgTypeString<<"C"<<channel;
return type.str();
}