这是我的问题:

我在寻找一种方法来将图像导入C ++然后遍历其像素,每隔一定的颜色的像素被发现时递增的计数器。

我做了一些研究,但我还没有发现什么特别有用。 魔鬼看起来像一个很好的选择,但我不知道从哪里开始。

下面是一个位的C ++ / Python的伪代码说明希望什么,我试图做的:

for image in folder:

    A = 0;
    B = 0;

    for pixel in image:

        if (pixel == colourA) {A++}
        if (pixel == colourB) {B++}

    //Output the count of colours for each image
    outputToFile(A, B);

有没有人有哪里开始一些提示?

由于

EDIT 一些额外的信息:我使用的是Windows 7和所有的图像都.pngs

EDIT2 我得到的一切工作,但实际上找出当前像素的颜色。目前我使用这样的:

int blue = ((uchar *)(img->imageData + pixelX*img->widthStep))[pixelY*img->nChannels + 0];

但它不工作,我不知道它是如何工作的。我一直没能找到这事,我能理解。任何人都可以点我如何找到某个像素的RGB值正确的方向?

EDIT3 完成!对于任何人谁发现这个试图做类似的事情,代码我的大部分剩余的问题和公平一点,可以发现的此处。感谢您的帮助!

有帮助吗?

解决方案

Definiately看看 OpenCV的,因为当你开始需要更多的空间间移动,然后OpenCV的会让你做更多的计算机视觉任务。并使用的boost ::文件系统以做“用于DIR每个图像”代码。

注意, CV ::比较功能基本上没有一半你已经工作......我会让你看的,享受利用OpenCV的API。

其他提示

您应该看一看OpenCV的。

取决于平台和图像格式。在Windows中,BMP图像的原生支持(即API中)。 ImageMagick的是一个跨平台的库,相当普遍,大约需要任何格式在那里,但它的沉重。 Qt拥有一些图像处理以及 - 限定于最常见的格式

SDL有一些有用的像素处理的东西。

http://www.libsdl.org/

这是很干净,以及

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top