我已经将图像识别算法实现为OpenCV c ++项目,并且我还有C#web服务。我想从我的c#web服务调用我的c ++ Opencv项目。这就是我的项目应该如何工作。从移动设备发送图像到c#web服务。然后我需要调用Opencv c ++项目来进行图像识别。我试图通过使用DLL来做到这一点。如果您认为使用DLL是最好的方法,请告诉我如何将我的Opencv c ++ projetc转换为DLL或者是否有任何其他方法。
非常感谢
答案 0 :(得分:1)
我认为你应该使用PInvoke来完成你的工作。没有使用它,但据我所知,这是做到这一点的方法:
答案 1 :(得分:1)
您需要创建一个C ++ DLL项目,您将在其中编写项目的图像识别部分。您可以查看本教程,了解如何使用Visual Studio创建C ++ DLL项目:Walkthrough: Creating and Using a Dynamic Link Library
您应该在该DLL文件中创建一个类,并且您将能够使用该类来处理图像。通过使用PInvoke,您将能够在C#项目中使用该类。这是一个很棒的教程,介绍如何在C#项目中使用DLL的C ++类:How to Marshal a C++ Class。我在许多项目中使用过该文章的解决方案A来调用C#中的C ++代码。
为了将现有C ++项目转换为DLL,您可以更改其输出类型。转到Project-> Properties,在该窗口中,您需要转到Configuration Properties-> General,并将Configuration type更改为Dynamic Library(.dll),如下图所示:
之后,您需要公开要从dll导出的类或函数。我强烈建议你启动一个新的dll项目(从第一个链接开始)并从那里开始工作,因为AppWizard会为你创建一些代码并且它会更容易。