asp.net调用opencv类库,实现图像处理显示
原理上来说,通过dll的调用,无论是asp.net还是winform都可以调用opencv及其类库。但是在实现的过程还是有许多细节是经过摸索和总结才得到结果的。作为界面显示的方法,asp.net的网页界面和winform的传统界面应该说是各有所长,应当灵活运用。这里是我如何采用asp.net调用opencv类库,实现图像处理显示的小结。
一、主要过程
我这里阐述的是最方便、最容易操作的过程,但不一定是最科学的过程
1)将以GOIMAGE.DLL为主体的,和其支持库,全部拷贝到system32文件夹下
在代码中显示引用库文件
const string dllpath = "GOImage.dll";
[DllImport(dllpath,
EntryPoint = "getgray",
CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern int getgray(string ImagePath, string ImagePath_Res, ref int errcode);
[DllImport(dllpath,
EntryPoint = "getgreen",
CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern int getgreen(string ImagePath, string ImagePath_Res, ref int errcode);
2)编写具体的引用代码
//网页调用opencv类库,实现图像处理
// jsxyhelu 2015年3月31日
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Runtime.InteropServices;
public partial class _Default : System.Web.UI.Page
{
[DllImport("GOImage.dll",
EntryPoint = "getgreen",
CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern int getgreen(string ImagePath, string ImagePath_Res, ref int errcode);
//结果是成功的。
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
//返回值
int iret = 0;
int ierror = 0;
string strresult = "错误";
//图片输出位置
string strOutput = Server.MapPath(@"~/imgs/result.jpg");
//获得输入图片地址
string strInput = TextBox1.Text.ToString();
//进行处理
iret = getgreen(strInput, strOutput, ref ierror);
//输出结果
Image1.ImageUrl = strOutput;
if (0==iret)
{
strresult = "正常";
}
else if (1==iret)
{
strresult = "干旱";
}
else
{
strresult = "虫蛀";
}
tbresult.Text = "当前的图像类型为" + strresult;
}
}
二、注意事项
在调用的时候,一定要把所有的相关的dll全部拷贝过去,否则会报看不懂的错误。