現在、ディスクから画像を読み取っています。イメージは、グレー スケール イメージまたはバイナリ イメージです。ただし、画像のヘッダーファイルからはわかりません。私が今やっていることは、ユニークなピクセルの数を伝えることです。一意のピクセル数が 2 を超える場合、画像はグレースケールです。それ以外は白黒画像です。私は仕事をするために次の機能を使用しています:
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;
}
この関数は、候補画像がグレースケール画像の場合にうまく機能します。ただし、候補イメージがバイナリの場合、関数は時間がかかります。機能を改善するためのアイデアはありますか?