• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

在C#使用OpenCV参考GOCW

武飞扬头像
cduoa
帮助1

在gitee上看到一个感兴趣的项目,《在C#中使用OpenCV(使用GOCW)》,https://gitee.com/jsxyhelu2020/gocw。

    总得来说,这个项目实现了使用原生C 编写OpenCV算法,封装成动态链接库(windows平台是.dll),再使用C#通过CLR引用动态库中的函数方法。是我希望了解的实现方式。

    按作者总结就是:

    (1)分离界面和算法业务
    (2)图像数据直接通过内存传值,高效率完成算法调用
    (3)直接编写C 语法程序,方便维护改进
    (4)在C#中可以通过CLR方式引用,提供函数级别接口

一、下载编译测试运行

    从gitee上下载源码,根据提示一步步设置完毕,编译通过,但是在使用C#通过CLR引用动态库中的函数方法时却出错。    

学新通

    这个项目开源于2年前,使用的OpenCV版本是4.1.2。    

学新通

    下载了4.1.2依然是提示失败。

    

学新通

二、重新搭建项目

    我决定重新搭建这个项目。改用OpenCV4.5.5版本。基于VS2022

    (1)新建C 项目    

学新通

    (2)新建头文件和源文件:GOCW.h和GOCW.cpp    

学新通

    分别把源码贴进去,此处略去,可于文末下载源码查看。

    (3)配置环境

    根据文章《三味书屋-OpenCV在windows中的环境搭配 (luweidong.cn)》配置OpenCV在windows vs中的运行环境。

    注意在配置运行环境前,在配置管理器中,选好运行平台,我这里选择x64

学新通

    注意:高级->公共语言运行时支持,设置为公共语言运行时支持(/clr)。.net 目标框架版本填写:v4.7.2,需要与第(7)步新建的winform版本一致。    

学新通

    (4)删除默认文件

    删除4个文件:framework.h、dllmain.cpp、pch.cpp、pch.h    

学新通

    (5)取消预编译头

    第四步删除pch.h和pch.cpp,所以这里取消预编译头。在C/C ->预编译头,设置为:不使用预编译头。

    在名为“GOCW”的C 项目上右键,选择属性,可以打开配置页。    

学新通

    (6)编译运行

    首次编译后提示:不支持两阶段名称查找。    

学新通

    解决方法是打开项目属性,C/C ->语言,把其中的符合模式修改为:否。    

学新通

    (7)新建winform(.NET Framework)项目    

学新通

    基于.net 4.7.2。框架需要与(3)配置环境中的.net 目标框架版本一致。    

学新通

    放置一个button控件和一个picture box控件    

学新通

    添加引用,引用C 项目:GOCW    

学新通

    button代码:    

  1.  
    Bitmap bmp = (Bitmap)Bitmap.FromFile("K:/test.png");
  2.  
    GOCWClass client = new GOCWClass();
  3.  
    //调用图像处理算法
  4.  
    MemoryStream ms = new MemoryStream();
  5.  
    bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
  6.  
    byte[] bytes = ms.GetBuffer();
  7.  
    Bitmap bitmap = client.testMethod(bytes);
  8.  
    pictureBox1.Image = bitmap;

    注意:配置管理器中,各个平台需要一样    

学新通

    运行,测试成功。    

学新通

    下载码是:67E903C899,下载码是啥?如何下载=》点击查看学新通https://www.luweidong.cn/details/88

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbijjj
系列文章
更多 icon
同类精品
更多 icon
继续加载