在Azure上通过asp.net使用EmguCV
2016-05-18 01:34
471 查看
我使用的环境为emgucv3.0+vs2015
我现在用的是之前数据库大作业用到的一个webservice 没建新的。
首先需要在vs里创建一个asp.net Web应用程序 模板选Empty
然后添加一个webservice。
由于在程序和webservice之间传递Bitmap貌似有点问题,所以我这里是将他们转换为byte的数组来传递的。
先添加那几个emgucv的dll文件的引用,接着写入代码
只是一个将图片转为灰度图的测试程序
然后在解决方案中新建两个文件夹 叫x86和x64,并把emgucv安装目录下bin文件夹下的x86和x64文件夹内的内容复制过去
然后右键发布解决方案
我这用的是我之前就建好的一个应用程序服务,如果之前没有建过,在这里应该需要新建一个
然后一路下一步, 到最后点下发布就好了。
接着还要把那两个文件夹给传到服务器上去,同样是右键文件夹,然后发布
接着就要进一下你的azure的控制台了,因为发布文件夹默认在这个服务的根目录,我们需要把它移到程序的执行文件所在的文件夹
一次点开,打开控制台
使用 ls 命令可以看到当前目录的所有文件夹(其他的那些dll文件都是我之前测试传上去的)
只要把x64 和x86这两个文件夹移到bin内就可以了
先在bin内创建两个文件夹,然后返回此目录,将文件复制过去
依次输入
然后记一下网址,在这。
然后新建一个winfrom应用程序
在项目选项卡里选择添加服务引用
将那个网站复制过去,然后加上 \ 后面跟着你建的那个webservice的名字,如果是默认的,那就是WebService1.asmx
加起来就会看起来是这样的
然后点击转到
再确定就可以了
我在这个程序里放了一个button和一个PictureBox
代码如下
全部都是默认名称。
接着还要修改下App.config
否则会出现 “已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。”的报错
其中这部分有修改
最后直接运行就可以了
我现在用的是之前数据库大作业用到的一个webservice 没建新的。
首先需要在vs里创建一个asp.net Web应用程序 模板选Empty
然后添加一个webservice。
由于在程序和webservice之间传递Bitmap貌似有点问题,所以我这里是将他们转换为byte的数组来传递的。
先添加那几个emgucv的dll文件的引用,接着写入代码
[WebMethod] public byte[] emgu(byte[] a) { MemoryStream ms1 = new MemoryStream(a); Bitmap bm = (Bitmap)Image.FromStream(ms1); ms1.Close(); Image<Bgra, byte> b = new Image<Bgra, byte>(bm); var c = b.Convert<Gray, byte>(); MemoryStream ms = new MemoryStream(); c.Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); byte[] bytes = ms.GetBuffer(); ms.Close(); return bytes; }
只是一个将图片转为灰度图的测试程序
然后在解决方案中新建两个文件夹 叫x86和x64,并把emgucv安装目录下bin文件夹下的x86和x64文件夹内的内容复制过去
然后右键发布解决方案
我这用的是我之前就建好的一个应用程序服务,如果之前没有建过,在这里应该需要新建一个
然后一路下一步, 到最后点下发布就好了。
接着还要把那两个文件夹给传到服务器上去,同样是右键文件夹,然后发布
接着就要进一下你的azure的控制台了,因为发布文件夹默认在这个服务的根目录,我们需要把它移到程序的执行文件所在的文件夹
一次点开,打开控制台
使用 ls 命令可以看到当前目录的所有文件夹(其他的那些dll文件都是我之前测试传上去的)
只要把x64 和x86这两个文件夹移到bin内就可以了
先在bin内创建两个文件夹,然后返回此目录,将文件复制过去
依次输入
cd bin mkdir x86 mkdir x64 cd .. xcopy x86 bin\x86 xcopy x64 bin\x64
然后记一下网址,在这。
然后新建一个winfrom应用程序
在项目选项卡里选择添加服务引用
将那个网站复制过去,然后加上 \ 后面跟着你建的那个webservice的名字,如果是默认的,那就是WebService1.asmx
加起来就会看起来是这样的
http://xxxxxx.azurewebsites.net/WebService1.asmx
然后点击转到
再确定就可以了
我在这个程序里放了一个button和一个PictureBox
代码如下
全部都是默认名称。
namespace WindowsFormsApplication4 { public partial class Form1 : Form { ServiceReference1.WebService1SoapClient a = new ServiceReference1.WebService1SoapClient(); Bitmap b = new Bitmap("0a0a5820d572a6a43adfcbf18af7c39b.jpg"); public Form1() { InitializeComponent(); pictureBox1.Image = b; } private void button1_Click(object sender, EventArgs e) { MemoryStream ms = new MemoryStream(); b.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); byte[] bytes = ms.GetBuffer(); ms.Close(); var c = a.emgu(bytes); MemoryStream ms1 = new MemoryStream(c); Bitmap bm = (Bitmap)Image.FromStream(ms1); ms1.Close(); pictureBox1.Image = bm; } } }
接着还要修改下App.config
否则会出现 “已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。”的报错
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="WebService1Soap" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://marketmanager.azurewebsites.net/WebService1.asmx" binding="basicHttpBinding" bindingConfiguration="WebService1Soap" contract="ServiceReference1.WebService1Soap" name="WebService1Soap" /> </client> </system.serviceModel> </configuration>
其中这部分有修改
<binding name="WebService1Soap" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> </binding>
最后直接运行就可以了
相关文章推荐
- 在ASP.NET 2.0中操作数据之六十:创建一个自定义的Database-Driven Site Map Provider
- 在ASP.NET 2.0中操作数据之六十一:在事务里对数据库修改进行封装
- 在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据
- 在ASP.NET 2.0中操作数据之六十三:GridView实现批量删除数据
- 在ASP.NET 2.0中操作数据之六十四:GridView批量添加数据
- 在ASP.NET 2.0中操作数据之六十五:在TableAdapters中创建新的存储过程
- ASP.NET防范SQL注入式攻击的方法
- Asp.net中使用文本框的值动态生成控件的方法
- 基于WEB的企业用能信息在线填报系统设计--毕业设计论文
- Asp.Net MVC4入门指南(1): 入门介绍
- ASP.NET立即上传图片
- asp.net操作word 配置在IIS上出现的问题
- ASP.NET Web API 2 入门教程
- ASP.NET Web API 2 入门教程
- ASP.NET Repeater中if块中判断Eval("")
- metasploit魔鬼训练营第一章笔记
- 初识asp.net--Hello World
- asp.net TreeView的选中CheckBox触发事件(父对象选中子对象全选)
- 关于casperjs
- 在ASP.NET 2.0中操作数据之五十九:使用SQL缓存依赖项SqlCacheDependency