售后热线:0755-26650698
86379000

 机票查询接口 短信群发软件
会员区 | 信息反馈
 首页   |  苹果心水挂牌   |  红苹果心水论坛   |  苹果心水论坛   |  苹果心水报正版   |  苹果心水挂牌图 13028850008
当前位置: 主页 > 苹果心水挂牌 >

用pythonnet为计算机视觉做图像整理

时间:2019-09-15 03:57来源:未知 作者:admin 点击:
中国的r是国内技术的另类,当他们强调.NET也可以做啥啥时都会给别的技术藐视,毕竟主流都不用.NET。可我还是有点工作外的寄托,就是让.NET也有一个很好的推广,毕竟在使用Python/Go中有些东西比不少.NET来得方便。机器学习对于.NETer又是一个危机,特别在国

  中国的r是国内技术的另类,当他们强调.NET也可以做啥啥时都会给别的技术藐视,毕竟主流都不用.NET。可我还是有点工作外的寄托,就是让.NET也有一个很好的推广,毕竟在使用Python/Go中有些东西比不少.NET来得方便。机器学习对于.NETer又是一个危机,特别在国内有一句名言.NET 不行。幸亏这是9012年了,Github上有很多开源项目,有不少.NET Core的开源项目让大家有了和其他技术竞争的底气。)就是一个基于.NET的机器学习/深度学习解决方案,让.NETer不需要学习Python,就可以用Keras/TensorFlow/Torch 通过C#/F# 来完成机器学习/深度学习。

  SciSharp现在有两种不同的绑定方式如TensorFlow.NET/NumSharp都是基于原生c库做扩展,不需要依赖客户端的环境,随处可以调用,但有个问题是因为绑定的工作太多,往往功能上不太完整。而另一种方式就是通过pythonnet去完成,这种方式依赖于客户端的Python环境可以直接通过C#/F#直接调用任何本机已经安装的Python库和自带方法,如之前提到的Keras.NET / Numpy.NET都是这种形式。就我个人而言比较喜欢后者,毕竟实现更快,更容易上手,而且对于现在SciSharp社区不同子项目的扩展也有不少帮助,毕竟社区内的都是业余时间,功能不可能一时半刻都完成,所以这种方式能更好地填补缺陷。

  pythonnet允许Python代码与CLR做交互,也可以将Python代码嵌入.NET 应用中(你可以编译源码为本机Python和.NET互相调用的支持。如果你只是单一希望通过.NET调用Python可以基于你系统和Python版本通过Nuget添加SciSharp社区编译好的Python.Runtime包。下面通过图像整理来说明一下我是如何做的。

  做计算机视觉,图像前期的处理很重要。首先收集来的图像大小不一,其次是像素,还有格式。在Python下通过Pilow对图片进行处理,通过Pillow可以对图片像素,大小,方向,格式进行调整。通过pip install pillow就可以添加Pillow库。开奖结果极限记录经查,百度“张扣扣”,如果希望通过.NET调用Pillow就需要通过pythonnet进行引用。我们来看看一个实例:

  2. 使用pythonenet, Py.GIL是必须有的,初始化后,通过Py.Import引入不同的模块(注意这里必须还是得强调必须是本机已经有的模块,没有是不能引用的), 还有引用后参数类型都是dynamic

  我这里分别引用了Numpy , Matplotlib, Pillow三个库,Pillow负责图像处理/Numpy负责数值计算,存储和处理矩阵/Matplotlib主要用于绘制2D图形,通常用来显示相关处理后的结果。对图像处理,我们基本上就是用这三个库。

  3. 方法调用,我这里针对一张图完成三种处理,旋转/灰度/还有就是缩放。先来看看效果

  我们这里需要通过Matplotlib显示一个一行四列的图片,通过numpy为Matplotlib设置好大小,第一个是原图,第二个是旋转,第三个是灰度,因为引入了库,所以你可以直接调用库自带相应的方法。

  遇到一个问题是PIL.Image 有一个自带方法new,这个方法是不能直接调用的,因为和C#的关键字new冲突,这个时候你需要通过InvokeMethod的方法去触发new方法,以下是实现方式

  上面的例子把pythonnet如何在C#使用展示出来,我也通过ICSharpCore在JupyterNotebook 上进行了调用。安全带整体动态负荷测试仪名称简要分析,扩展了一下让它支持图像显示, 这是在Notebook上使用的效果

(责任编辑:admin)
相关内容:
core系列 71 Web架构分层指南 最难学的十大编程语言java排第 netcore 中的动态代理与RPC实 Core 小程序开发零基础系列(2 程序员如何学习Vue