1 图片如何处理成黑白两色。注意。不是灰度。是黑白两色。2 还有。如何按照象素点来切割图片?3 还有如何调整图片的对比度

解决方案 »

  1.   

    1,
    if( (r+g+b) > 255*3/2 )
      white
    else
      black;
      

  2.   

    http://www.donews.net/vion/archive/2004/08/09/63381.aspx
    http://www.donews.net/vion/archive/2004/08/09/63377.aspx
    希望对楼主有所帮助.
      

  3.   

    2 还有。如何按照象素点来切割图片:
    看看这个
    http://ded.nuaa.edu.cn/download/WindowsApplication6.rar
      

  4.   

    回复sarcophile可否具体一点.
    我手头有一个处理成灰度的.如何修改?
    /// <summary>
    /// 转换成灰度图像
    /// </summary>
    /// <param name="b"></param>
    /// <returns></returns>
    public static bool Gray(Bitmap b)
    {
    BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), 
    ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
    int stride = bmData.Stride;
    System.IntPtr Scan0 = bmData.Scan0;
    unsafe
    {
    byte * p = (byte *)(void *)Scan0;
    int nOffset = stride - b.Width*3;
    byte red, green, blue;
    for(int y=0;y<b.Height;++y)
    {
    for(int x=0; x < b.Width; ++x )
    {
    blue = p[0];
    green = p[1];
    red = p[2];
    p[0] = p[1] = p[2] = (byte)(.299 * red + .587 * green + .114 * blue);
    p += 3;
    }
    p += nOffset;
    }
    }
    b.UnlockBits(bmData);
    return true;
    }
      

  5.   

    忘了说,是对每个像素
    if( (r+g+b) > 255*3/2 )  // 255*3/2 是个阈值,可以调整
      该点 = white
    else
      该点 = black;
    图象处理的初级知识,具体看一下书吧,我也没太研究过。
      

  6.   

    sarcophile(食肉动物)
    你好.请问我应该如何用的的算法替代我贴的哪个代码中的算法?直接把p[0] = p[1] = p[2] = (byte)(.299 * red + .587 * green + .114 * blue);替换成if( (byte)(red + green + blue) > 255*3/2 )
    {
    p[0] = p[1] = p[2] = (byte)(255 + 255 + 255);
    }
    else
    {
    p[0] = p[1] = p[2] = (byte)(0 + 0 + 0);
    }我对指针操作不熟悉.我只是猜测是不是这样修改??
    另外就算修改成功.那么这个图象的存储信息依然是按照rgb色来表示的.有没有让它直接存储成为只有两个调色版的格式?
      

  7.   

    http://www.microsoft.com/china/msdn/archives/library/dnaspp/html/colorquant.asphttp://www.microsoft.com/china/msdn/archives/library/dndotnet/html/servingimages.asp
      

  8.   

    int nWidth=p_imgBmp.Width-1,nHeight=p_imgBmp.Height-1;
    for(int i=0;i<nHeight;i++)
    {
    for(int j=0;j<nWidth;j++)
    {
    c=p_imgBmp.GetPixel(j,i);
    if(c.R+c.G+c.B>255*3/2)
    p_imgBmp.SetPixel(j,i,System.Drawing.Color.FromArgb(255,255,255));
    else
    p_imgBmp.SetPixel(j,i,System.Drawing.Color.FromArgb(0,0,0));
    }
    }