检查像素之间的差距

时间:2016-05-03 23:19:23

标签: c# loops image-processing pixel

我需要从bmpOut图像中填充selFrame图像中的一些白色像素。现在,如果pixel3是透明的或空的,它将检查它的所有方面。如果像素周围不是透明也不是空的像素,则pixel3将从pixel2获得它的值。如何检查pixel3周围的像素是否透明?像素的间隙最大为10.这是我到目前为止所得到的

for (int c = 0; c < selFrame.Width; c++)
 for (int j = 0; j < selFrame.Height; j++)
   {
     var pixel2 = bmpOut.GetPixel(c, j);
     var pixel3 = selFrame.GetPixel(c, j);
     if (pixel3.ToArgb() == System.Drawing.Color.Transparent.ToArgb() || pixel3.IsEmpty)
       {

         // do process here
        }

    }

更新了代码

 for (int c = 0; c < selFrame.Width; c++)
            for (int j = 0; j < selFrame.Height; j++)
            {
                var pixel2 = bmpOut.GetPixel(c, j);
                var pixel3 = selFrame.GetPixel(c, j);
                if (pixel3.ToArgb() == System.Drawing.Color.White.ToArgb() || pixel3.IsEmpty)
                {
                    for (int n = 1; n < 20; n++)
                    {
                        if (c + n < selFrame.Width && j + n < selFrame.Height)
                            if (c - n > 0 && j - n > 0)
                            {
                                var pix = selFrame.GetPixel(c + n, j + n);
                                var pix2 = selFrame.GetPixel(c - n, j - n);
                                if (pix.ToArgb() != System.Drawing.Color.Transparent.ToArgb() || !pix.IsEmpty)
                                    if (pix2.ToArgb() != System.Drawing.Color.Transparent.ToArgb() || !pix2.IsEmpty)
                                    {
                                        selFrame.SetPixel(c, j,pixel2);
                                        MessageBox.Show("q");
                                    }

                        }

                    }
                }

            }

消息框正在显示,但它没有填满白色像素

0 个答案:

没有答案