Можем ли мы использовать openCV для загрузки и изменения размера двумерного изображения с индексированными цветами? - PullRequest
1 голос
/ 25 ноября 2011

Итак, у меня есть изображение cv::Mat, созданное в виде индексированной 2D-матрицы с цветами 1,2,3, ... до 255. Я хочу изменить размер своего изображения сразу, но делаю это так, как сейчас: индивидуально для каждого индекса, чтобы не получались смешанные цвета:

//...
std::map<unsigned char , cv::Mat* > 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<cv::Mat> result;
for( std::map<unsigned char, cv::Mat*>::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 Ответ

1 голос
/ 25 ноября 2011

вы можете использовать функцию Remap с вашим собственным месивом для интерполяции значений по своему усмотрению

взгляните на этот урок ( Ссылка )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...