如何使用 Neighborhood-for 使用所有频道?

How to use Neighborhood-for using all the channels?

我有一张 RGB 二维图像。

我想创建具有相同颜色(RGB 值)的像素组;它们是从左到右然后从上到下阅读的。

当当前像素的RGB值与之前的不同时,说明我找到了一组(其中包含之前的像素)。

我知道有 CImg 函数 CImg_for2x2(img,x,y,z,c,I,T),但问题是它仅适用于通道 c,而我对 RGB 值感兴趣。文档:http://cimg.eu/reference/group__cimg__loops.html#lo6

你知道是否可以让 "CImg" 理解我使用 RGB 值而不仅仅是红色值,例如?

很难从你的问题中分辨出来,但我认为你正在寻找 "Connected Component Analysis""labelling".

CImg 工具是 label()

因此,如果您从这张包含 3 个白色斑点的图像开始:

然后 运行 这个:

#include <iostream>
#include "CImg.h"
using namespace std;
using namespace cimg_library;

int main(int argc, char** const argv)
{
    CImg<int> img("input.png");
    img.label(0,0);
    img.save_png("result.png");
}

它会 "label" 图像中所有不同的斑点具有唯一编号,如下所示: