繁体   English   中英

获取像素值灰度图像16位.net

[英]get pixel value greyscale image 16 bits .net

我有一个pixels16列表pixels16 ,其中包含来自16位灰度图像的pixeldata。 然后,我有一个显示图像的pícturebox和一个函数,用户可以单击它在图片框中的任意位置,系统将返回该位置的pixelvalue(请参见代码下方)

这是用于返回给定位置的像素值的代码:在我看来,我正在显示用户在图像中某个位置单击的确切像素的值,对吗?

我的逻辑是,如果图像为512x512,那么我可以先走Y然后找到斑点,再走X ,得到该点的像素值,如下所示: int pixelposition = (512 * (y-1)) + x;

我的方向正确吗?

        for (int y = 0; y < picbox_mpr.Width; y++)
        {
            if (e.Y == y)
            {
                for (int x = 0; x < picbox_mpr.Height; x++)
                {
                    if (e.X == x)
                    {
                        int pixelposition = (512 * (y-1)) + x;
                        string a= pixels16[pixelposition].ToString();
                        MessageBox.Show(a);
                    }
                }
            }
        }
 for (int y = 0; y < picbox_mpr.Width; y++) { if (eY == y) { for (int x = 0; x < picbox_mpr.Height; x++) { if (eX == x) { 

啊,是的, 对于假设的模式。

这应该简单地变成

int pixelposition = (512 * (e.Y-1)) + e.X;
string a= pixels16[pixelposition].ToString();
MessageBox.Show(a);

没有循环。

您应该注意,eX和eY是基于鼠标相对于控件顶部而不是图像相对于屏幕的位置。 在某些模式下,由于页边距的缘故,这会有些错误,但是如果滚动,缩放或居中,那将是非常错误的。 您应该查看此示例代码 ,了解如何转换为图像坐标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM