-
C#教程之C#调用OpenCV开发简易版美图工具(3)
可以看到,这里的代码稍微有点特别。
我们通过BitmapImage导入图片后,直接使用BitmapImage的对象的ToMat方法,把BitmapImage转换成了Mat类的对象。
这个ToMat方法,我们需要特别留意一下,因为他并不是BitmapImage类的方法,它是一个扩展方法,只有我们引用了OpenCvSharp命名空间,BitmapImage和Bitmap对象才会增加扩展方法ToMat。
效果图如下:
顶点变化
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using ( var src = new Mat( @"..\..\Images\ocv02.jpg" , ImreadModes.AnyDepth | ImreadModes.AnyColor)) { using ( var dst = new Mat()) //复制以后处理 { //设置原图变换顶点 List< Point2f> AffinePoints0 = new List<Point2f>() { new Point2f(100, 50), new Point2f(100, 390), new Point2f(600, 50) }; //设置目标图像变换顶点 List<Point2f> AffinePoints1 = new List<Point2f>() { new Point2f(200, 100), new Point2f(200, 330), new Point2f(500, 50) }; //计算变换矩阵 Mat Trans =Cv2.GetAffineTransform(AffinePoints0, AffinePoints1); //矩阵仿射变换 Cv2.WarpAffine(src, dst, Trans, new OpenCvSharp.Size() { Height= src.Cols, Width= src.Rows }); var mem = dst.ToMemoryStream(); BitmapImage bmp = new BitmapImage(); bmp.BeginInit(); bmp.StreamSource = mem; bmp.EndInit(); imgOutput.Source = bmp; } } |
效果图如下:
美颜磨皮 双边滤波
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
using ( var src = new Mat( @"..\..\Images\ocv02.jpg" , ImreadModes.AnyDepth | ImreadModes.AnyColor)) { using ( var dst = new Mat()) //复制以后处理 { Cv2.BilateralFilter(src, dst, 15, 35d, 35d); var mem = dst.ToMemoryStream(); BitmapImage bmp = new BitmapImage(); bmp.BeginInit(); bmp.StreamSource = mem; bmp.EndInit(); imgOutput.Source = bmp; } } |
栏目列表
最新更新
Python 中如何实现参数化测试?
Appium移动端测试--基础预热
自定义404页面
python redis模块详解
python爬虫--图片懒加载
Python抓取豆瓣电影top250!
Tornado—添加请求头允许跨域请求访问
pycharm设置开发模板/字体大小/背景颜色(
python爬虫公众号所有信息,并批量下载公
docker系列之一:初见docker
.Net Standard(.Net Core)实现获取配置信息
Linux PXE + Kickstart 自动装机
Shell 编程 基础
Shell 编程 条件语句
CentOS8-网卡配置及详解
Linux中LVM逻辑卷管理
1.数码相框-相框框架分析(1)
Ubuntu armhf 版本国内源
Linux中raid磁盘阵列
搭建简易网站
mysql 安装了最新版本8.x版本后的报错:
Mysql空间数据&空间索引(spatial)
如何远程连接SQL Server数据库的图文教程
复制SqlServer数据库的方法
搜索sql语句
sql中返回参数的值
sql中生成查询的模糊匹配字符串
数据定义功能
数据操作功能
将Session值储存于SQL Server中