- 浏览: 262689 次
- 性别:
- 来自: 济南
文章分类
最新评论
题目来自OpenCV·China的每周一练:
我们在做项目时,通常需要把依赖于opencv,vs(例如vs2005),或者vc(例如vc6.0)的程序,在没有安装相关环境的电脑上去运行。那么现在有哪些方法可以摆脱这些依赖?(提供可行建议即可得10分)
http://www.opencvchina.com/thread-1368-1-1.html
前面的童鞋讲得很全了,我再补充一下自己的理解~
OpenCV的安装
我们下载的OpenCV安装包一般包括源码,示例,文档和编译好的动态链接库(以前OpenCV可能需要自己编译一遍,OpenCV2.3.1之后都有一个build的文件夹,有编译好的mingw,vc9和vc10的版本)。
我们写代码如果调用OpenCV的函数,需要添加附加依赖项:
Include Directories :C:\OpenCV\OpenCV-2.4.2\build\include
Library Diractories:C:\OpenCV\OpenCV-2.4.2\build\x86\vc10\lib
然后还需要在Linker->Input->Additional Dependencies里添加会用到的各种XX.lib,XXd.lib
还有把两个bin文件夹:
C:\OpenCV\OpenCV-2.4.2\build\x86\vc10\bin
C:\OpenCV\OpenCV-2.4.2\build\common\tbb\ia32\vc10
添加到系统环境目录
有的安装教程里还会教我们在Source Directories添加OpenCV的源码文件,其实是不需要的。因为实际调用OpenCV里的函数是用的dll的隐式调用方式。
DLL调用
隐式调用一般需要:
声明函数接口的.h文件——include文件夹里的内容
链接动态库的.lib文件——lib文件夹里的内容以及Input->Additional Dependencies添加的XX.lib
动态链接库.dll文件——bin文件夹的内容
这里bin文件夹是在系统环境目录里的,所以执行代码是exe文件可以找到。也可以添加在系统文件中,把需要用到的dll拷贝到exe同一个文件夹下即可。
所以,如果把未发布的工程拷贝到没有opencv的电脑上,只要把需要用的函数相关的.h,.lib以及.dll文件考过去即可。
另一种调用dll的方式是显示调用:
显示调用是不需要.lib和.h文件的,只会用到dll文件。
但需要在代码里“显示”加载要用到的函数。例如:
HINSTANCE hDLL=NULL;//生命DLL句柄 hDLL=LoadLibrary("opencv_core242d.dll"); //加载DLL HMAT myImread=(HMAT)GetProcAddress(hDLL,"imread"); //使用DLL中的函数
这样在拷贝工程时只拷贝用到的DLL文件就可以。
但这样代码写得很麻烦,DLL换个名字版本之类的要改很多地方,一般用得不多。
静态编译的exe程序
如果只是给别人静态链接的exe程序,比如一个demo,不用跑程序。
最常用的方法就是一起拷贝exe和dll文件到目标电脑:
也就是将需要用到的dll文件拷到exe文件夹下即可,Release拷贝XX.dll,Debug版本拷贝XXd.dll
(所以我们写Additional Dependencies不用到的尽量不写,这样拷的dll会少一些~)
再一种方法就是楼上提到的把OpenCV的源码一起编译到可执行文件中。
这种需要在写代码时把OpenCV的源文件加入到工程中。也就是用到的.cpp文件目录添加到Source Directories项中。
编译头文件可能会遇到"找不到文件结尾”之类的错误,在项目属性Category中选择"Precompiled Headers"和"Not using precompiled headers"即可。
这样工程不是调用的OpenCV编译过的dll文件,而是把OpenCV当成你自己写的文件一样一起编译。
在没有安装OpenCV的电脑上只用拷贝最终的exe文件即可。不需要dll文件,只是生成的exe会比较大~
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/8066329
发表评论
-
unity基础开发----物体位移和旋转实用代码
2013-11-21 22:46 1219using UnityEngine; using Syst ... -
Android中View绘制优化之一---- 优化布局层次
2012-09-04 23:00 962... -
Android中View绘制优化二一---- 使用<include />标签复用布局文件
2012-09-08 13:54 967... -
Android中View绘制优化之三---- 优化View
2012-09-13 21:00 1044... -
兰林任务管理应用程序雏形版以及概要说明
2012-09-15 21:54 821... -
Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
2012-10-10 18:14 1058... -
Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
2012-10-17 20:05 803... -
Android中文件选择器的实现
2012-11-30 08:59 1070... -
【编译原理】使用Lex将C/C++文件输出为HTML文件
2012-07-20 09:37 96508年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【编译原理】正则表达式
2012-07-21 21:49 212408年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【OpenCV】访问Mat图像中每个像素的值
2012-07-22 07:10 1087今天百度搜资料还搜到了自己的。。。《访问图像中每个像素的值 ... -
【编译原理】用Yacc做语法分析
2012-07-23 05:47 169108年9月入学,12年7月毕 ... -
【UML】UML几种图的绘制
2012-07-24 09:49 93508年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ... -
【OpenCV】邻域滤波:方框、高斯、中值、双边滤波
2012-07-26 10:52 1401邻域滤波(卷积) 邻域算子值利用给定像素 ... -
【数据结构】排序算法:希尔、归并、快速、堆排序
2012-07-28 06:15 93208年9月入学,12年7月毕 ... -
【OpenCV】角点检测:Harris角点及Shi-Tomasi角点检测
2012-07-31 13:25 1487角点 特征检测与匹配 ... -
【UML】案例分析:机场运作系统
2012-08-01 17:22 290308年9月入学,12年7月毕 ... -
【OpenCV】边缘检测:Sobel、拉普拉斯算子
2012-08-04 13:41 1463边缘 边缘(edge)是指图像局部强度变化最显著的部分。主要 ... -
【OpenCV】Canny 边缘检测
2012-08-08 10:17 1930Canny 边缘检测算法 1986 ... -
【UML】案例分析:新型超市购物自助系统
2012-08-19 01:13 125208年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大 ...
相关推荐
详细描述了如何在一个opencv程序中添加相应的.h .lib 和 .dll文件以及添加相应的代码,使之在一个没有安装OpenCV的机器上也可以运行。包括三个步骤(详见文档):添加所需的.h和.lib文件;添加相应的代码对应于.h与....
压缩包包含有:OpenCV安装程序及教程
这是OpenCV 4.8.0的Windows版安装程序。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,包含了多种常见的视觉处理功能。这个版本适用于Windows操作系统,可以帮助用户快速...
这个是配置VC++6.0的OpenCV安装程序,在anna的博客里有写安装后的配置过程,上传给大家免费分享,刚刚学习滴孩子们不要再那么辛苦的找啦~~
OpenCV简介及安装OpenCV简介及安装OpenCV简介及安装OpenCV简介及安装
VS2013+OpenCV 2.4.9项目生成EXE文件如何在其他电脑上直接运行
一个小程序,用来测试opencv的安装是否成功。
测试opencv是否安装好的程序,采用vs2012,opencv2.4.4编译通过,需要配置opencv库
这是OpenCV 4.9.0的Windows版安装程序。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,包含了多种常见的视觉处理功能。这个版本适用于Windows操作系统,可以帮助用户快速...
opencv4.0 2019年2月28日下载github上,网速超慢,上传备份
C++ Builder和Opencv 运行程序。请首先下载OpenCV 安装
opencv-python使用GPU资源--虚拟环境安装与编译opencv源码(csdn)————程序
opencv安装是否成功的测试程序,用于安装opencv程序后,检测opencv是否能使用的检测的程序:调用一张图片并显示出来
VC6.0 OpenCV1.0 SDK环境
详细介绍了OpenCV安装配置,Visual Studio2010的安装问题,介绍了OpenCV和VS2010之间的配置
opencv3.0安装脚本
本资源内有opencv2.4.7安装程序,及在win7下安装在vs2010(2)的教学,亲测绝对可用
基于opencv的人脸检测程序,用的是opencv2.3.1,可直接运行
这是OpenCV开发环境搭建时写的一个测试小程序,里面附带有环境搭建的文档。测试小程序实现了图像加载,selectROI截图,图片二值化处理,获取图像物体边缘。
编译opencv4.5.4 出现opencv_videoio_ffmpeg_64 下载失败 后程序运行MP4写入失败 [ INFO:0] global F:\opencv\opencv\sources\modules\videoio\src\videoio_registry.cpp (223) cv::`anonymous-namespace'::...