本文为原创作品,转载请注明出处

欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/

在进行一个项目时,有时为了不公开算法源码,通常会把算法打包成一个dll文件,这样既可以测试算法的效果,也不会泄露自己的算法成果。下面介绍一个在VS2013+Opencv2.4.9版本的环境下,打包的例子,与大家一起交流。

先上一张图片,测试用

Ok开始正文:

打包成dll

  1. 【文件】——【新建】——【项目】

2、新建一个DLL项目,命名opencv_dll,空项目和导出符号不选择

完成

3、源文件中包含3个文件 dllmain.cpp opencv_dll.cpp 和stdafx.cpp,这里的dllmain.cpp类似于C中的main函数,但是我们的代码并不是在这个dllmain函数中,它只是相当于一个入口和出口,当函数执行时先进入这个dllmain函数中,然后再执行其他函数,我们需要定义的函数是写在opencv_dll.cpp这个文件中的,其实和生成可执行文件的程序编写一样。

4、在这里编写一个函数,该函数的功能是读取指定路径下存放的一张图片,并调用opencv中的函数对图片进行颜色空间的转换,后显示图片。

// opencv_dll.cpp : 定义 DLL 应用程序的导出函数。
//#include "stdafx.h"
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>using namespace cv;__declspec(dllexport) int opencv_dll_main(string sImagePath){// 读入一张图片(测试图) Mat img = imread(sImagePath),tempImage;// 创建一个名为 "处理后图片"的窗口 cvNamedWindow("处理后图片", 0);cvResizeWindow("处理后图片", int(img.rows ), int(img.rows));cvNamedWindow("原始图片", 0);cvResizeWindow("原始图片", int(img.rows), int(img.rows));//进行颜色空间的转换cvtColor(img, tempImage, COLOR_LBGR2Lab);// 在窗口中显示测试图 imshow("处理后图片", tempImage);imshow("原始图片", img);// 等待操作,关闭显示 waitKey(0);return 0;
}

5、代码写完后,编译生成,会在该项目路径下的debug文件夹中生成opencv_dll.dll和opencv_dll.lib文件,代表生成成功。

测试生成的dll文件

1、新建一个控制台项目,【新建】—【项目】—【win32控制台应用程序】

勾上空项目,完成

2、添加代码文件

#include <stdio.h>
#include<iostream>
using namespace std;#pragma comment(lib, "opencv_dll.lib")        //调用dll文件时候必须用到的
int opencv_dll_main(string sImagePath);          //对刚才写好的处理函数进行声明  //主函数  int main(){string imagePath = "G:\\VS2013_project\\blog\\test_opencv_dll\\测试图.jpg"; //图像的处理路径opencv_dll_main(imagePath);return 0;}

写好代码后,调试生成,报错

那是因为没有把生成的dll文件拷贝到这个项目的debug路径下,拷贝之后还要在项目属性中进行声明,【项目】——【属性】——【VC++目录】——【库目录】,添加

G:\VS2013_project\blog\test_opencv_dll\Debug(就是上面拷贝到的debug路径),再次编译生成。运行程序。

3、效果如下:



图像处理算法打包成dll相关推荐

  1. 使用vs2019将libtorch或者网络打包成dll

    最近在搞一个程序,需要把libtorch打包成dll,让别人使用,在网上找了好久都没只有找到合适的答案,最后在一个博主大哥那里找到了,很是感激这位大哥与我们分享自己的经验,接下来我把我自己的学习过程也 ...

  2. python算法打包成接口供其他语言调用

    这里写目录标题 1 普通python程序单机版: 1.1 pyinstaller进行打包 1.2 测试exe文件能不能用 2 python算法打包成网页版: 3 tensorflow打包 3.1 重新 ...

  3. vc 将已有项目打包成dll 并应用于其他项目_.NET混淆器 Dotfuscator使用教程:保护你的应用之存档报告文件...

    Dotfuscator是一款.NET混淆器和压缩器,防止你的应用程序被反编译. 本篇文章将继续上一篇文章与大家分享保护应用程序的后续三个部分:存档报告文件.加强保护和替代方法. 存档报告文件 作为构建 ...

  4. vs中将网站aspx.cs文件打包成一个dll

    vs中将网站aspx.cs文件打包成一个dll 23小时前 vs中将网站asp.net cs文件打包成一个dll. 在vs2008以上的版本中可以建立web应用来开发网站,这样网站aspx.cs文件[ ...

  5. winform把所有dll打包成一个exe

    大家都知道做winform开发,是可以利用visual studio进行打包的,但是这种打包的方式需要双击安装,那么有没有什么方法,可以把winform程序打包成绿色版呢?当然,这里的"绿色 ...

  6. 将ocx和DLL文件打包成cab文件,inf的编写

    From: http://icrwen.iteye.com/blog/1118766 http://blog.csdn.net/yimiyangguang1314/article/details/65 ...

  7. 将exe和dll文件打包成单一的启动文件

    将exe和dll文件打包成单一的启动文件   当我们用 VS 或其它编程工具生成了可执行exe要运行它必须要保证其目录下有一大堆dll库文件,看起来很不爽,用专业的安装程序生成软件又显得繁琐,下面这个 ...

  8. 使用压缩软件将exe和dll文件打包成一个exe启动文件

    问题:以搜狗输入法的截图软件为例,如何将exe和dll文件打包成一个的exe可执行文件,即将该软件目录下的文件合并成一个可以独立运行的exe文件 解决:通过压缩软件,本文我使用的软件是2345好压.( ...

  9. pyqt打包成linux可执行程序,PyQtopencv图像处理(5):python程序打包成可执行文件...

    让我们稍微休息一下,来把我们目前写好的小程序打包成.exe文件. python程序打包有一些方法,py2exe和pyinstaller.其中py2exe的安装比较方便,但是打包起来比较麻烦:而pyin ...

最新文章

  1. asp.net MVC2 初探四
  2. 机器学习基础专题:支持向量机SVM
  3. c# mvc html.beginform,asp.net-mvc – 使用Html.BeginForm()与自定义路由
  4. RHEL6入门系列之二十七,源码安装及软件安装综合实例
  5. SAP CRM产品主数据明细页面无法打开的调试步骤
  6. 将字符串中的小写字母转换成大写字母 (信息学奥赛一本通-T1138)
  7. 环境变量简单介绍windows-linux-mac
  8. html中如何使用渐变颜色代码,html – 如何在CSS中使用渐变作为字体颜色?
  9. 什么事,是你当了领导才明白的?(转)
  10. sql server 锁定_关于锁定SQL Server的全部
  11. 十大著名黑客-----凯文-米特尼克
  12. .NET周报【11月第1期 2022-11-07】
  13. WinForm下多层架构的实现
  14. Matlab2017a中帮助文档无法设置为中文的一种解决办法
  15. java如何做聚类分析_K-means算法的Java实现 聚类分析681个三国武将
  16. 鼠标按下拖拽移动盒子
  17. GeoJson数据合并
  18. OHA Android
  19. 篇章结构类型、层次及分析模式研究
  20. 系统分析师备考经验分享

热门文章

  1. git 从入门到精通
  2. AIX Study之--AIX网卡配置管理(ent0、en0、et0)
  3. 前端工程师的知识体系
  4. 服务注册发现consul之五:Consul移除失效服务的正确姿势
  5. 腾讯云数据库团队:MySQL5.7 JSON实现简介
  6. redis的数据类型及设置方法
  7. 树莓派搭建minecraft服务器
  8. ipad流水布局及其旋转界面view间隔布局调整
  9. 终于搞明白gluPerspective和gluLookAt的关系了
  10. SQLServer2008 视图创建实例