我现在正在从磁盘读取图像。图像可以是灰度图像或二值图像。但是,我无法从图像的头文件中分辨出来。我现在做的是告诉唯一像素的数量。如果唯一像素数大于两个,则图像为灰度;否则为黑白图像。我正在使用以下功能来完成这项工作:
bool is_binary_image( std::vector<unsigned char> &memory)
{
std::set<unsigned char> myset;
for( std::vector<unsigned char>::iterator it = memory.begin();
it!= memory.end();
it++)
{
myset.insert(*it);
if (myset.size()>2)
return false;
}
return true;
}
如果候选图像是灰度图像,这个函数可以做得很好。但是,如果候选图像是二进制的,那么该函数是耗时的。关于改进功能的任何想法?