所以,我有一个图像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
来正确调整大小)?
您可以使用Remap函数与您自己的mash来插入您喜欢的值
看一下这个教程(链接)