您的位置:首页 > 编程语言 > C#

基于C#和Aforge.net实现图像素描效果

2014-12-01 19:41 417 查看
1 AForge.net是图像处理方面的开源类库,基于C#设计实现的。在这里实现一个简单的图像素描效果。

需要添加以下程序集的引用:

using AForge.Imaging;
using AForge.Imaging.Filters;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Windows.Media;
using System.Windows.Media.Imaging;


2 具体代码实现

图像是在WPF的Image控件CurrentPhoto上显示的。需要进行BitmapSource到System.Drawing.Bitmap相互转换。

private Bitmap image = null;
private void cartoonPaint_MouseDown(object sender, MouseButtonEventArgs e)
{
//素描效果制作
//image = GetBitmap((BitmapSource)CurrentPhoto.Source);
image = GetBitmap(changeImageSource);
if (image.PixelFormat != System.Drawing.Imaging.PixelFormat.Format24bppRgb)
{
Bitmap temp = AForge.Imaging.Image.Clone(image, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
image.Dispose();
image = temp;
}
//转换成灰度图像
Bitmap temBitmap  = Grayscale.CommonAlgorithms.BT709.Apply(image);
Bitmap temBitmap2 = (Bitmap)temBitmap.Clone();
Bitmap temBitmap3 = (Bitmap)temBitmap.Clone();
// create filter
Invert filter = new Invert( );
// apply the filter
filter.ApplyInPlace( temBitmap2 );

// create filter 边缘提取
DifferenceEdgeDetector filterEdge = new DifferenceEdgeDetector();
// apply the filter
filterEdge.ApplyInPlace(temBitmap);
// create filter
MoveTowards filterMove = new MoveTowards(temBitmap2, 30);
// apply the filter
Bitmap resultImage = filterMove.Apply(temBitmap);
filter.ApplyInPlace(resultImage);
BitmapSource temSource = CreateBitmapSourceFromBitmap(resultImage);
CurrentPhoto.Source = temSource;
}


3 效果图

原图:



效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: