opencv - 获取主导色opencv

标签 opencv image-processing colors

我有一个多色图像。

enter image description here

我想计算图像的主色。主色是红色,我想过滤掉红色。我在 opencv 中执行以下代码,但它没有执行。

inRange(input_image, Scalar(0, 0, 0), Scalar(0, 0, 255), output);

否则我怎样才能获得主色?我的最终项目应该自行确定对象的最大颜色。最好的方法是什么?

最佳答案

你应该 quantize (减少颜色数量)您的图像,然后再搜索最常见的颜色。

为什么?想象一下具有 100 个像素的 (0,0,255)(蓝色 RGB 颜色),100 个像素的 (0,0,254)(几乎是蓝色 - 你甚至不会找出差异)和 150 像素的 (0,255,0)(绿色)。这里最常见的颜色是什么?显然,它是绿色的。但是在量化之后你会得到 200 像素的蓝色和 150 像素的绿色。

阅读此讨论:How to reduce the number of colors in an image with OpenCV? .这是一个简单的例子:

int coef = 200;
Mat quantized = img/coef;
quantized = quantized*coef;

这是我应用后得到的结果:

enter image description here

您也可以使用 k-means 或 mean-shift 来做到这一点(这是非常有效的方法)。

关于opencv - 获取主导色opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16895135/

相关文章:

colors - PyQt 组合框中单行中的不同颜色

php - 通过 MySQL 的全日历动态事件颜色

python - 使用 OpenCV 的 VideoCapture 方法进行高效链接处理? {编辑}

opencv - 错误交叉编译 : hidden symbol . .. 最终链接失败

java - exif信息是如何编码的?

image - 在“处理”中为单个草图创建多个窗口

c# - 按下键时在两种颜色之间切换

c++ - 使用 OpenCV 非自由库时 vector 未定义

c++ - 为什么meanStdDev()返回[nan]?

python - 想法如何使用python测量骨架的长度