在Azure上通过asp.net使用EmguCV

9 篇文章 0 订阅

我使用的环境为emgucv3.0+vs2015
我现在用的是之前数据库大作业用到的一个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>

最后直接运行就可以了
这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cccccc1212

这是c币不是人民币,不要充值

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值