C# 将像素列表声明为带有附加变量的BLOB

C# 将像素列表声明为带有附加变量的BLOB,c#,C#,作为一种爱好,我试图研究一种场景文本检测方法 我希望做如下工作: struct pixel1 { public int y1; public int x1; public Color color1; };

作为一种爱好,我试图研究一种场景文本检测方法

我希望做如下工作:

           struct pixel1
                    {
                        public int y1;            
                        public int x1;
                        public Color color1;
                    };

           List<pixel1> blob1 = new List<pixel1>();//I failed to create blob1 list with variables.

           List<blob1> listofblob1 = new List<blob1>();//declair list of blob which I failed to do.

    private void runMethod1()
        {
    //I want to use it like it shows in below.
    foreach (var blob1 in listofblob1)
        {
    blob1.DistanceToClosestBlob=getDistanceToNextblob(blob1, listofblob1);
    blob1.size=blob1.Count;
    blob1.centerxy=getcenterXY(blob1);
    if(blob1.center.x<0||blob1.center.y<0){return;}
        }
}
struct pixel1
{
公共int y1;
公共int x1;
公共颜色1;
};
List blob1=新列表()//我无法使用变量创建blob1列表。
List listofblob1=新列表()//我没能做到的那一点。
私有void runMethod1()
{
//我想像下面所示那样使用它。
foreach(listofblob1中的变量blob1)
{
blob1.DistanceToClosestBlob=getdistancetoextblob(blob1,listofblob1);
blob1.size=blob1.Count;
blob1.centerxy=getcenterXY(blob1);

if(blob1.center.x如果您将其更改为类,那么您可以做更多的事情来创建一个不可变结构

不可变结构引用位于此处:

需要这样做:

struct Pixel1
{
    public int X1 { get; }
    public int Y1 { get; }            
    public Color Color1 { get; }

    public Pixel1(int x, int y, Color c)
    {
       X1 = x;
       Y1 = y;
       Color1 = c;
    }            
};

但是把它变成一个类。

如果你把它变成一个类,那么你可以做更多的事情来创建一个不可变的结构

struct pixel1
        {
            public int y1;            
            public int x1;
            public Color color1;
        };

        struct Blob1//pixel list=blob
        {
            public List<pixel1> blob1;
            public int size;            
        };

        List<Blob1> bloblist = new List<Blob1>();  

void runMethod1()
        {

            Blob1 b1 = new Blob1();
            b1.size = 1;
            pixel1 p1 = new pixel1();
            b1.blob1.Add(p1);

        }
不可变结构引用位于此处:

需要这样做:

struct Pixel1
{
    public int X1 { get; }
    public int Y1 { get; }            
    public Color Color1 { get; }

    public Pixel1(int x, int y, Color c)
    {
       X1 = x;
       Y1 = y;
       Color1 = c;
    }            
};
但要使它成为一个类。

struct pixel1
struct pixel1
        {
            public int y1;            
            public int x1;
            public Color color1;
        };

        struct Blob1//pixel list=blob
        {
            public List<pixel1> blob1;
            public int size;            
        };

        List<Blob1> bloblist = new List<Blob1>();  

void runMethod1()
        {

            Blob1 b1 = new Blob1();
            b1.size = 1;
            pixel1 p1 = new pixel1();
            b1.blob1.Add(p1);

        }
{ 公共int y1; 公共int x1; 公共颜色1; }; struct Blob1//pixel list=blob { 公开名单1; 公共整数大小; }; List bloblist=新列表(); void runMethod1() { Blob1=新Blob1(); b1.尺寸=1; pixel1 p1=新的pixel1(); b1.blob1.Add(p1); }
结构像素1
{
公共int y1;
公共int x1;
公共颜色1;
};
struct Blob1//pixel list=blob
{
公开名单1;
公共整数大小;
};
List bloblist=新列表();
void runMethod1()
{
Blob1=新Blob1();
b1.尺寸=1;
pixel1 p1=新的pixel1();
b1.blob1.Add(p1);
}

我需要将这些像素放入blob并制作ListOfBLOB,这样我就可以根据它们的独特特性对它们进行过滤。(runMethod1())你知道我如何做到这一点吗?你只需这样做:List blob=new List();如果我这样做,我就不能像blob1.size=blob1.Count那样使用它;哦,我现在看到了。谢谢。我需要把这些像素放到blob中,然后制作ListOfBlob,这样我就可以根据它们的独特特性对它们进行过滤。(runMethod1())你知道我怎么做吗?你可以简单地这样做:List blob=new List();如果我这样做,我就不能像blob1.size=blob1.Count那样使用它;哦,我现在看到了。谢谢。看起来我可以这样做。我可以使用floodfill和lockbits.getpixels方法,将每个像素信息放入像素1,然后将它们放入blob1,然后全部放入bloblist。然后循环通过bloblist,分析关于blob1的信息并输入我可以使用floodfill和lockbits.getpixels方法,将每个像素信息放入像素1,然后将它们放入Blob1,然后全部放入bloblist。然后循环通过bloblist,分析Blob1s的信息,并将信息输入Blob1变量les将稍后对其进行研究和处理。