Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何发现图像或多或少是均匀的w.r.t颜色(色调)?_C++_Opencv - Fatal编程技术网

C++ 如何发现图像或多或少是均匀的w.r.t颜色(色调)?

C++ 如何发现图像或多或少是均匀的w.r.t颜色(色调)?,c++,opencv,C++,Opencv,更新: 我已经将图像分割成不同的区域。对于每一个区域,我需要知道它在颜色方面是否更均匀 有哪些可能的战略可以做到这一点 以前的: 我想检查图像的颜色变化,最好是色调变化,以找出由同质颜色构成的图像,即只有一种或两种颜色的图像 我知道一个策略是为它创建一个色调直方图,然后我可以找到每种颜色的计数,但是我总共有几个图像,我不能为每幅图像创建180个像素的色调直方图,因为那样的话,整个代码的计算成本会很高 是否有任何内置的openCV方法或其他更简单的方法来确定图像是由单一颜色组成还是由多种颜色组成

更新:

我已经将图像分割成不同的区域。对于每一个区域,我需要知道它在颜色方面是否更均匀

有哪些可能的战略可以做到这一点

以前的: 我想检查图像的颜色变化,最好是色调变化,以找出由同质颜色构成的图像,即只有一种或两种颜色的图像

我知道一个策略是为它创建一个色调直方图,然后我可以找到每种颜色的计数,但是我总共有几个图像,我不能为每幅图像创建180个像素的色调直方图,因为那样的话,整个代码的计算成本会很高

是否有任何内置的openCV方法或其他更简单的方法来确定图像是由单一颜色组成还是由多种颜色组成

一些可以计算色调图像变化的东西也可以。我找不到像varianceimage这样的东西


PS:我在C++中编写代码。

< P>可以不用直方图来计算方差,因为平均平方值减去平均值的平方。它使用两个累加器对图像进行单次扫描。选择一种不会溢出的数据类型。

谢谢,我理解用这种方式计算方差的概念,但我必须对多张图像这样做,而且我必须一次又一次地这样做,这在计算上会很昂贵。因此,我希望避免以这种方式计算方差。如果你想要真正的方差值,你需要至少查看每个像素一次,而且你无法避免计算费用。不太重,计算色调的成本要高得多。对于近似值,请使用抽取。openCV中是否有内置的方法?我不知道,我总是从头开始编程。如果您安装了ImageMagick,就像大多数Linux发行版一样,并且它也适用于OSX和Windows,使用identify-format%k image.png,您可以很容易地找到图像中唯一颜色的数量。@MarkSetchell:对不起,我没有。