c#位图问题

| 对不起,上一篇文章。我现在在这里显示完整的代码。 我需要知道bitmap.Width和bitmap.Height-1的含义以及bitmap.Scan0的含义。 我在互联网上搜索,但没有对此给出任何完整的解释。 我将不胜感激任何能简要解释整个事情的人。谢谢。
public static double[][] GetRgbProjections(Bitmap bitmap)
        {
            var width = bitmap.Width - 1;
            var height = bitmap.Height - 1;

            var horizontalProjection = new double[width];
            var verticalProjection = new double[height];

            var bitmapData1 = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

            unsafe
            {
                var imagePointer1 = (byte*)bitmapData1.Scan0;

                for (var y = 0; y < height; y++)
                {
                    for (var x = 0; x < width; x++)
                    {
                        var blu = imagePointer1[0];
                        var green = imagePointer1[1];
                        var red = imagePointer1[2];

                        int luminosity = (byte)(((0.2126 * red) + (0.7152 * green)) + (0.0722 * blu));

                        horizontalProjection[x] += luminosity;
                        verticalProjection[y] += luminosity;

                        imagePointer1 += 4;
                    } 

                    imagePointer1 += bitmapData1.Stride - (bitmapData1.Width * 4);
                }
            }

            MaximizeScale(ref horizontalProjection, height);
            MaximizeScale(ref verticalProjection, width);

            var projections = 
                new[]
                    {
                        horizontalProjection, 
                        verticalProjection
                    };

            bitmap.UnlockBits(bitmapData1);
            return projections;
        }
    
已邀请:
显然,它遍历RGBA位图的每个像素,并计算其在两个阵列内跟踪的每个像素的亮度,每条水平线的亮度和每条垂直线的亮度。 除非我弄错了,否则-1甚至不应该存在。当您有一个100x100的位图时,您要创建一个包含100个元素的数组,而不是创建一个包含99个元素(宽度为1)的数组,因为您想跟踪每条水平线和垂直线。     

要回复问题请先登录注册