在c#调用OpenCV其实非常简单,因为c#中有很多OpenCV的开源类库。
本文主要介绍在WPF项目中使用<代码> OpenCVSharp3-AnyCPU 代码>开源类库处理图片、下面我们先来做开发前的准备工作。
首先,我们先创建一个WPF项目。
然后,在Nuget上搜索OpenCVSharp,如下图:
使用OpenCvSharp; 使用OpenCvSharp.Extensions;
然后我们在项目中使用垫类来进行图片操作。
红蓝颜色通道互换
在OPenCV里,垫类是非常重要的,它是处理图片的入口。
现在,我们先做一个简单的图片操作,红蓝通道颜色互换,代码如下:
垫垫=new垫(@“. . \ . . \ \ ocv02.jpg图像”,ImreadModes.Unchanged); (var y=0;y & lt;mat.Height;y + +) { (var x=0;x & lt;mat.Width;x + +) { Vec3b颜色=mat.Get(y、x); var temp=color.Item0; 颜色。Item0=color.Item2;//B转R 颜色。第二条=temp;//R转B mat.Set (y、x、颜色); } } var mem=mat.ToMemoryStream (); BitmapImage bmp=new BitmapImage (); bmp.BeginInit (); bmp。StreamSource=mem; bmp.EndInit (); imgOutput。源=骨形态发生蛋白; mat.Dispose();///该方法在垫子里被重写了,可以释放资源,可以放心调用
效果图如下:
使用(var src=https://www.yisu.com/zixun/new垫(@“. . \ . . \ \ ocv02.jpg图像”,ImreadModes。AnyDepth | ImreadModes.AnyColor)) { Cv2。侵蚀(src, src,新垫()); var mem=src.ToMemoryStream (); BitmapImage bmp=new BitmapImage (); bmp.BeginInit (); bmp。StreamSource=mem; bmp.EndInit (); imgOutput。源=骨形态发生蛋白; }
效果图如下:
使用(var src=https://www.yisu.com/zixun/new垫(@“. . \ . . \ \ ocv02.jpg图像”,ImreadModes。AnyDepth | ImreadModes.AnyColor)) { 使用(var dst=new垫())//复制以后处理 { Cv2。BitwiseNot (src, dst,新垫()); var mem=dst.ToMemoryStream (); BitmapImage bmp=new BitmapImage (); bmp.BeginInit (); bmp。StreamSource=mem; bmp.EndInit (); imgOutput。源=骨形态发生蛋白; } }
效果图如下:
BitmapImage bmpSource=new BitmapImage(新Uri(“包://用途:,,,/图片/ocv02.jpg”));
垫垫=bmpSource.ToMat ();
(var y=0;y & lt;mat.Height;y + +)
{
(var x=0;x & lt;mat.Width;x + +)
{
Vec3b颜色=mat.Getc#调用OpenCV开发简易版美图工具【推荐】