【GHS】在C#中使用OpenCV(使用GOCW)

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-12-30

1、什么是GOCW 为了解决在Csharp下编写OpenCV程序的问题,我做过比较深入的研究,并且实现了高效可用的方法GreenOpenCsharpWrapper(GOCW)。通过这种方法,能够分离界面和算法业务,高效率完成算法调用,而且非常方便进行算法维护。应该说是我在多年项目实践中不断总结提炼出来的一点东西。 GOCW的发布地址为:
本帖含有隐藏内容,请您 回复 后查看
、GOCW有什么特点 分离界面和算法业务图像数据直接通过内存传值,高效率完成算法调用直接编写C++语法程序,方便维护改进在C#中可以通过CLR方式引用,提供函数级别接口开放源代码3、GOCW在VS中的环境配置下载gocw_master,解压后获得两个目录文件。[图片]其中,GOCW是类库文件,而WINFORM_DEMO是引用范例。使用VS2017或者更高版本打开WINFORM_DEMO.sln(或新建winform程序),在“引用”处添加GOCW的引用。[图片] 特别需要注意,正确编译GOCW需要OpenCV的正确配置,所以需要正确设置include和lib,并且保证对应版本的dll文件能够被正确访问。[图片] [图片]特别需要注意1:保证dll和csharp程序的.net目标框架是一致的 [图片] [图片] 特别需要注意2:保证dll和csharp程序的.net目标框架是一致的配置管理器中,所有项目版本全部使用64位[图片]GOCW是通过CLR的方式进行调用,关于CLR的原理这里不展开。重点将一下你在哪里添加图像处理算法,打开 GOCW.h文件#pragma once#include "opencv.hpp"#using using namespace System;using namespace System::Data;using namespace System::IO;using namespace System::Drawing;using namespace System::Drawing::Imaging;using namespace std;namespace GOCW { public ref class GOCWClass { public: /////例子函数////// //1.传递图像 /* MemoryStream ms = new MemoryStream(); b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] bytes = ms.GetBuffer(); Bitmap bitmap = client.testMethod(bytes);*/ Bitmap^ GOCWClass::testMethod(cli::array^ pCBuf1); //2.引用传递int /*unsafe { int* value = stackalloc int[1]; value[0] = 0; int iret = client.allTest(2, 3, value); }*/ int GOCWClass::allTest(int a, int b, int* c); //3.引用传递字符串 System::String^ GOCWClass::allTestStr(System::String^ i

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    106

  • 帖子

    82

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.1303s Mem:2061Kb