c++ - 使用 C++ 获取 vector<cv::Vec3b> 中出现次数最多的值

标签 c++ algorithm opencv image-processing computer-vision

我现在正在使用 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/

相关文章:

algorithm - 遍历所有区域的最短路径

python - Google Colab不显示图片

c++ - 不允许函数模板部分特化 'swap<T>'

c++ - 清理你的#include 语句?

c++ - 原子内存排序和中断消息循环

c - 从数组中获取最大排序子数组的算法

arrays - 每个 k=1..n 的所有大小为 k 的子数组的最大总和

python - 双 View SFM 的相机姿势不正确

opencv - 使用单个静态相机从移动物体中获取深度图像

C++ 将输入字符串与字符串进行比较会警告我从 double 到 int 的转换 - 可能会丢失数据