OpenCV イメージタイプの列挙名 (例: CV_32FC1) を取得しますか? 質問する

OpenCV イメージタイプの列挙名 (例: CV_32FC1) を取得しますか? 質問する

OpenCV の C++ インターフェイスでは、画像のタイプを確認するのは簡単なようです。画像がある場合はcv::Mat img = cv::imread("someImage.xyz")、 を実行するだけですint theType = img.type()

ただし、予想どおり、 を呼び出すと列挙名 (例)img.type()ではなく整数が返されます。CV_32FC1

CV_32FC1OpenCV 列挙型の整数値がわかっている場合、列挙型名 (例 ) を出力する簡単な方法はありますか?

ベストアンサー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();
}

おすすめ記事