我想创建一个OpenCV包装器以在C#中使用它.我使用此链接作为参考http://drthitirat.wordpress.com/2013/06/06/use-opencv-c-codes-in-a-vc-project-solution-of-creating-a-managed- clr-wrapper / 到目前为止,我已经创建了一个包含我的图像处理代码的C++控制台应用程序.我还创建了一个C++/CLI类库,其中包含了OpenCV代码,但是当我尝试构建它时,我得到了许多关于C++代码中使用的OpenCV函数的未解决的外部错误,我不知道如何解决它...知道如何解决这个问题吗?在C#中使用C++ OpenCV代码有一种更简单,更简单的方法吗?我不想使用Emgu或任何其他包装器,我的图像处理代码必须使用C++.
我如何使用visual studio 2012解决opencv的问题:
备注A:我可以保证这个解决方案有效.我使用了opencv 2.4.2等模式检测和camshift等功能.
备注B:另一个主题是如何进行准确的编组.在简单数据类型的情况下,毫无疑问使用像UInt32等c ++/cli数据类型.但问题是,如果你想传递更复杂的对象,如cv :: Mat,它们在c ++/cli中没有直接等价的类型.在那种情况下,我在c ++/cli方面制作了这类的简化版本.
备注C:不要在不同的项目中混淆架构.如果您使用的是x86,则可以在所有项目中使用.
备注D:实际上,在c#中使用c ++代码的问题有两个解决方案:我描述的那个和使用动态动态编组从c#托管代码直接调用c ++非托管代码.有两个主要的缺点:动态编组需要时间,你不知道复杂数据类型之间的确切做法(即,与int或字符串不同的一切).所以c ++/cli它真的是一个很好的选择,因为你可以混合托管和非托管代码.
备注E:此解决方案是通用的,它不仅仅在opencv中计数.我成功地将这个制作c ++/cli包装器用于旋转阶段(电机设备),它只有c ++驱动程序并在c#代码中使用了这些驱动程序.
关于备注C:使用Depends(http://www.dependencywalker.com/)之类的依赖性walker 来查看哪些依赖项不一致.