OpenCVを使用して、色をインデックス化した2次元画像を読み込んでサイズを変更できますか?

ですから、1,2,3、...、255までのインデックス付き2Dマトリックスとして作成された画像 cv :: Mat を持っています。画像を一度にサイズ変更したいが、私は現在行っているように、各インデックスごとに個別に色を混ぜないようにしています:

//...
std::map clusters;
for(int i = 0; i < sy; ++i)
{
    for(int j = 0; j < sx; ++j)
    {
        unsigned char current_k = image[i][j];
        if (clusters[current_k] == NULL) {
            clusters[current_k] = new cv::Mat();
            (*clusters[current_k]) = cv::Mat::zeros(cv::Size(sx, sy), CV_8UC1);
        }
        (*clusters[current_k]).row(i).col(j) = 255;
    }
}

std::vector result;
for( std::map::iterator it = clusters.begin(); it != clusters.end(); ++it )
{
    cv::Mat filled(cv::Size(w, h), (*it->second).type());
    cv::resize((*it->second), filled, filled.size(), 0,0, CV_INTER_CUBIC);

    cv::threshold( filled, filled, 1, 255, CV_THRESH_BINARY);
    result.push_back(filled);
}

ですから、OpenCVは私のインデックス画像の自動化を助けます(正確なサイズ変更のために各クラスタごとに cv :: Mat を作成することができませんでした)?

1
あなたが比較した結果があなたのサイズ変更メソッドの結果とOpenCVイメージサイズ変更関数の使用結果との間に投稿された場​​合、それは役に立ちます。特に、私はあなたのメソッドが最近隣のサイズ変更とどのように比較されるのかを見ることに興味があります。
追加された 著者 misha,

1 答え

独自のマッシュでリマップ機能を使用して、好きなように値を補間することができます

このチュートリアルをご覧ください(リンク)。

1
追加された