我现在正在使用 vector <cv::Vec3b>
存储图像的 RGB 值.
为了避免混淆,让我尝试进一步澄清我的问题。例如,我有一个大小为 10 的 vector 。存储的值如下所示:
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)。我如何获得这些值? 我希望找到 vector 中出现次数最多的 RGB 值。有人对我如何做有任何建议和代码示例吗?谢谢。
最佳答案
假设您的 3D 数组是 array[][][]
并且在某个位置 (x,y) 您得到 R=200、G=100、B=10 然后您将递增array[200][100][10]
的值加 1。让您在另一个位置再次获得 R=200、G=100、B=10 然后您将再次递增 array[200][100][10]
减 1 所以,现在 array[200][100][10]
的总值为 2。您将对所有像素位置。
然后,最后您将找到 3D 数组中的最大值,假设最大值为 1000,位于 array[210][15][10]
。这表示出现次数最多的R.G和B的组合是“R=210,G=15,B=10”
因此,简而言之,我们可以说 [ ][ ][ ] 处的值告诉您组合 [R][G][B] 出现了多少次。
关于c++ - 使用 C++ 获取 vector<cv::Vec3b> 中出现次数最多的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21693841/