C# 如何获得位图对象的精确部分

C# 如何获得位图对象的精确部分,c#,image,bitmap,C#,Image,Bitmap,我使用C#中位图的getPixels来检测颜色模式。我有一个图像文件,但我只需要研究文件的一部分(正好是图像内部的一个矩形,从四面裁剪了5%) 我想知道文件的原点(0,0)在哪里,所以我可以使用一个简单的函数遍历所有像素(参见代码)。有关于0,0在哪里的约定吗???左上角?右上角?左下角?右下角 我在这里展示的函数对我来说还可以,不需要更有效的方法来检查文件,因为文件不够大。因此,如果我浏览所有文件,最长为1秒。我只需要了解x轴和y轴的位置 谢谢,, 乔希 ulong CountPixels(位

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

我在这里展示的函数对我来说还可以,不需要更有效的方法来检查文件,因为文件不够大。因此,如果我浏览所有文件,最长为1秒。我只需要了解x轴和y轴的位置

谢谢,, 乔希

ulong CountPixels(位图bm、颜色目标\u颜色)
{
//循环通过像素。
ulong匹配=0;
对于(int y=0;y
您只需获取一个矩形作为参数,并查看该矩形内的点,为了确保矩形内的所有点都位于位图内,您需要执行
Math.Min(bmp.Height,region.Y+region.Height)
Math.Min(bmp.Width,region.X+region.Width)
而不仅仅是
region.Y+region.Height
region.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;
    }
ulong CountPixels(位图bm、颜色目标颜色、矩形区域)
{
//循环通过像素。
ulong匹配=0;
对于(int y=region.y;y
只需从您想要的点开始
x
y
。例如,如果点是100100,正方形应该是50x50
(x=100;x<150,x++)
图像中的坐标通常从左上角开始。X向右,Y向下。某些图像格式(如.bmp)在内部对此的处理方式有所不同,但这与您无关,除非您正在编辑图像文件中的原始字节。旁注:GetPixel非常非常慢。您可能需要查看锁位。谢谢,我会尝试的this@Josh.h不客气
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;
    }