请教算法:如何得到一张图片中出现最多的一种颜色呢?
我原本的想法是,设置一个3维数组,维数是R,G,B值,所以这个数组是这样的
array[byte,byte,byte] of word
但是问题是,函数不允许有那么大的参数。
那好,我现在改成对每一个 r,g,b 值 除以10, 然后 floor,我的意思是忽略细微的颜色差别,结果数组就变成
array[0..25,0..25,0..25] of word
然后用Scanline取每一点的颜色,相应的改变数组里的值(就是在相应的维数那里加1而已)。这部分已经最大优化了,可以跳过。
最后我还要再次检索一次那个三维数组,找到里面的最大值。再将维数提出来,变化一个颜色。这个值就是近似出现最多的那种颜色。
这种方法我是创建了一个 thread 来做的,速度还可以接受。
只是效果不是太好,并不能找到最准确的值。
而且,如果一张图象,背景都是近似白的,但是人物有很多暗色,结果得出来的还是类似黑色的值。
我在网上也搜索了很久,找不到有什么可以参考的信息。所以来这里请教,请各位有自己想法的给点提示吧,谢谢!