按强度对EmguCV中灰度图像的像素进行排序

时间:2018-11-08 12:50:45

标签: c# emgucv

我正在尝试对灰度图像中的所有像素进行排序。其类型为:

Image<Gray, Byte>

我也是EmguCV的新手,以前从未使用过它,但是据我了解,最好使用内置的EmguCV工具和功能对图像执行操作。与其直接使用Data我的图像属性,我不希望使用内置的EmguCV工具对其进行排序。

所以我的问题是:是否有一种方法可以使用内置的EmguCV工具按照图像中的所有像素的强度对其排序?如果没有,我该如何对像素进行排序?

输出结果应该在左上方包含最高值,在右下方包含最低值。

1 个答案:

答案 0 :(得分:0)

EmguCV没有您想要的任何功能。您可以使用Array.sort()类中的Array函数对所有像素进行排序。

Image<Gray, byte> img = new Image<Gray, byte>("1.jpg");

byte[] b = img.Bytes;
Array.Sort(b);

byte[, ,] b_img = new byte[img.Width, img.Height, 1];

for (int i = 0; i < img.Height; i++)
{
     for (int j = 0; j < img.Width; j++)
     {
          b_img[j, i, 0] = b[j + i * img.Width];
     }
}

Image<Gray, byte> img2 = new Image<Gray, byte>(b_img);

pictureBox1.Image = img.Bitmap;
pictureBox2.Image = img2.Bitmap;

enter image description here