如何从图像中提取HSV直方图。 [EmguCV]

时间:2016-11-17 13:22:45

标签: c# opencv image-processing emgucv surveillance

我正在制作一个项目,我希望根据布料颜色等柔和功能重新识别人物。所以我想获得他们图像的 HSV和RGB直方图,并稍后进行比较以检查它是否是同一个人。

到目前为止

代码

//This is small part of the project
        float[] hueHists=new float[255];
        float[] satHists = new float[255];


        DenseHistogram dh = new DenseHistogram(255, new RangeF(0, 255));
        DenseHistogram dh2 = new DenseHistogram(255,new RangeF(0, 255));
        Image<Hsv, byte> hsvImage = image.Convert<Hsv, byte>();

        for (int i = 0; i < 8; i++)
        {
            hsvImage.ROI = new Rectangle(0, i * 16, 64, 16);

            Image<Gray, byte>[] channels = hsvImage.Copy().Split();
            Image<Gray, byte> hue = channels[0];  
            Image<Gray, byte> sat = channels[1];  


            dh.Calculate<byte>(new Image<Gray, byte>[] { hue }, true, null);
            dh2.Calculate<byte>(new Image<Gray, byte>[] { sat }, true, null);

            float[] huehist = dh.GetBinValues();
            float[] sathist = dh2.GetBinValues();

            if(i==0)
            {
                huehist.CopyTo(hueHists,0);
                sathist.CopyTo(satHists,0);
            }
            else
            {
                hueHists = hueHists.Concat<float>(huehist).ToArray<float>();
                satHists = satHists.Concat<float>(sathist).ToArray<float>();
            }

        }

我还应该提取完整图像的HSV和RGB直方图,或者在分割图像后提取。

[编辑] 我已经提取了一个人A的直方图并将其与其他人的直方图相匹配(以检查他/她是否是人A)。 问题问题在于准确性。我的程序无法正确找到同一个人。我想问更好的方法......

也欢迎来自opencv的人

提前

0 个答案:

没有答案
相关问题