从图像生成颜色范围选择

时间:2016-10-31 19:08:36

标签: c# image-processing polygon graphicspath

我有一张图片,我想创建一个GraphicsPath来表示图像上的选择,这是基于构成图像的像素的某种阈值。例如,颜色范围算法,其考虑具有接近给定颜色的颜色值的像素。

目前我的问题不在于算法选择像素,而是在GraphicsPath上我的当前代码变得太复杂(太多点),因此创建它的时间非常昂贵,特别是进一步管理它。

目前我只是使用以下代码(在此示例中,我只是采用不透明的像素),我为每个拍摄的像素添加Rectangle

BitmapData bitmapData = sourceBitmap.LockBits(new Rectangle(0, 0, sourceBitmap.Width, sourceBitmap.Height), ImageLockMode.ReadOnly, sourceBitmap.PixelFormat);

GraphicsPath gp = new GraphicsPath();

unsafe
{
    byte* imagePointer = (byte*)bitmapData.Scan0;
    for (int x = 0; x < bitmapData.Width; x++)
    {
         for (int y = 0; y < bitmapData.Height; y++)
         {
              if (imagePointer[3] != 0)
                  gp.AddRectangle(new Rectangle(x, y, 1, 1));
              imagePointer += 4;
          }
     }
 }

如何简化此过程或结果GraphicsPath以获得更简单的路径,理想情况下仅使用轮廓?

修改 然后我将使用路径:在屏幕上显示其轮廓(运行蚂蚁);用它作为其他图像的掩码(取消路径中的内容);做命中测试(点是否在路径内)。举个例子: enter image description here

0 个答案:

没有答案