【发布时间】:2014-03-08 18:23:17
【问题描述】:
我现在正在使用vector <cv::Vec3b> 存储图像的 RGB 值。
为避免混淆,让我尝试进一步澄清我的问题。例如我有一个大小为 10 的向量。存储的值如下所示:
Vector address RGB Values(R,G,B)
[0][0][0]= 255,255,255
[1][1][1]= 40,42,40
[2][2][2]= 40,42,40
[3][3][3]= 40,42,40
[4][4][4]= 40,2,60
[5][5][5]= 9,9,0
[6][6][6]= 40,2,60
[7][7][7]= 40,42,40
[8][8][8]= 255,255,40
[9][9][9]= 255,255,40
据观察,出现次数最多的值为 (40,42,40)。我如何获得这些值? 我希望找到向量中出现次数最多的 RGB 值。有没有人有任何建议,关于我怎么做的代码示例?谢谢。
【问题讨论】:
-
你知道图像直方图吗?
-
@bibek subedi,是的,但现在我实际上是针对图像的特定行。虽然我知道如何为小 ROI 绘制直方图,但我从未尝试过单行。即使它有效,我也只知道如何获得出现次数最多的 R、出现次数最多的 G、出现次数最多的 B,而不是出现次数最多的 RGB 元素。希望你明白我的意思。
-
另外,我觉得如果我对每一行都使用直方图的方法,程序会超级慢。因此我正在考虑使用向量并整理出出现次数最多的元素。
-
不建直方图,怎么排序?
-
我上次遇到这个问题,对于一个std::vector,我从这篇帖子中学到了我的排序方法:stackoverflow.com/questions/12049352/…,Phillip Ngan的回答。
标签: c++ algorithm opencv image-processing computer-vision