C#+opencvsharp+wpf学习笔记(一)

利用opencvSharp导入图片

一、需要引用的类库

using OpenCvSharp;
using System.Drawing;
using System.IO;

二、利用opencv打开图片

Mat img = new Mat(@"F:\lena.png", ImreadModes.Grayscale);
//Grayscale是引入灰度图像,除此之外还可以是原彩色图像
//这里的Mat就是opencv处理的图片格式,@后面是文件的路径,要换成自己的路径
//之后可以直接用imshow显示,但这里准备使用wpf的image控件显示

三、Mat格式转Bitmap位图

opencv有自带的函数可以把Mat转为Bitmap。

public Bitmap MatToBitmap(Mat img)
        {
            return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(img);
        }

四、Bitmap转BitmapImage

由于wpf的image控件只能显示BitmapImage类型的图片,所以转为Bitmap之后,还得继续转换为BitmapImage。
对于处理单张图片,用下面的方法就行。但若是多张图片,这样会占用很多内存。
详情可参考链接: https://blog.csdn.net/chuangand/article/details/48031271.

public BitmapImage bitmapToimage(Bitmap bitimg)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                bitimg.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                stream.Position = 0;
                BitmapImage result = new BitmapImage();
                result.BeginInit();
                result.CacheOption = BitmapCacheOption.OnLoad;
                result.StreamSource = stream;
                result.EndInit();
                result.Freeze();
                return result;
            }
        }

五、在wpf的Image控件显示图片

编辑按钮的点击事件函数,使图片显示在上面。

Mat img = new Mat(@"F:\lena.png", ImreadModes.Grayscale);
Bitmap bitmap = MatToBitmap(img);
BitmapImage bitmapimg = bitmapToimage(bitmap);
imgshow.Source = bitmapimg;
发布了5 篇原创文章 · 获赞 0 · 访问量 179
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览