如何获取位图对象的确切部分

how to get exact part of Bitmap object

我正在使用 C# 中位图的 getPixels 来检测颜色模式。我有一个图像文件,但我只需要研究文件的一部分(图像内部的一个矩形,四面都裁剪了 5%) 我想知道文件的原点 (0,0) 在哪里,所以我可以使用一个遍历所有像素的简单函数(参见代码)。有没有关于 0,0 在哪里的约定???左上方?右上?左下方?右下角?

我在这里给你展示的功能对我来说没问题,不需要更有效的方法来检查文件,因为文件不够大。如果我浏览所有文件,那么最多 1 秒。我只需要了解 x 轴和 y 轴的位置

谢谢, 乔什.

    ulong CountPixels(Bitmap bm, Color target_color)
    {
        // Loop through the pixels.
        ulong matches = 0;
        for (int y = 0; y < bm.Height; y++)
        {
            for (int x = 0; x < bm.Width; x++)
            {

                if (bm.GetPixel(x, y) == target_color)
                {
                    matches++;
                }
            }
        }
        return matches;
    }

您可以只获取一个矩形作为参数,然后只查看该矩形内的点,以确保矩形内的所有点都落在位图中,您需要执行 Math.Min(bmp.Height, region.Y + region.Height)Math.Min(bmp.Width, region.X+Region.Width) 而不仅仅是 region.Y + region.Heightregion.X+Region.Width:

ulong CountPixels(Bitmap bm, Color target_color, Rectangle region)
    {
        // Loop through the pixels.
        ulong matches = 0;
        for (int y = region.Y; y < Math.Min(bmp.Height, region.Y + region.Height); y++)
        {
            for (int x = region.X; x < Math.Min(bmp.Width, region.X+Region.Width); x++)
            {

                if (bm.GetPixel(x, y) == target_color)
                {
                    matches++;
                }
            }
        }
        return matches;
    }