让opencv程序在没有安装opencv的电脑上运行
经常需要把用opencv写的程序拿到没有装opencv的电脑上去运行和演示,要让opencv程序脱离opencv环境,一般有两种方法:
一种是动态链接opencv,即把相应的dll拷贝到exe所在目录,然后一起拿到目标电脑上去运行;另一种是将相应dll中的函数打包进exe,然后直接拷贝exe到目标电脑上去运行,即静态编译。
这里以VS2008+opencv2.4.6编写的win32控制台程序为例介绍静态编译的步骤:
1. 将opencv安装目录\build下的include文件夹拷贝到当前工程目录下,重命名为opencv_include;
2. 将opencv安装目录\build\x86\vc9下的staticlib文件夹拷贝到当前工程目录下,重命名为opencv_lib;

3. 在VS左侧的目录树中右键项目名称,选择“属性”,在“配置属性”->“C/C++”->“常规”->“附加包含目录”中添加opencv_include目录。

4. 在“连接器”->“输入”->“附加依赖项”里添加相应的lib文件,debug版添加带d的lib,release版添加不带d的lib。
//win32控制台程序需要的lib
vfw32.lib
comctl32.lib
//opencv用到的第三方lib
.\opencv_lib\libjasperd.lib
.\opencv_lib\libjpegd.lib
.\opencv_lib\libpngd.lib
.\opencv_lib\libtiffd.lib
.\opencv_lib\zlibd.lib
//opencv各模块的lib
.\opencv_lib\opencv_calib3d246d.lib
.\opencv_lib\opencv_contrib246d.lib
.\opencv_lib\opencv_core246d.lib
.\opencv_lib\opencv_features2d246d.lib
.\opencv_lib\opencv_flann246d.lib
.\opencv_lib\opencv_gpu246d.lib
.\opencv_lib\opencv_haartraining_engined.lib
.\opencv_lib\opencv_highgui246d.lib
.\opencv_lib\opencv_imgproc246d.lib
.\opencv_lib\opencv_legacy246d.lib
.\opencv_lib\opencv_ml246d.lib
.\opencv_lib\opencv_nonfree246d.lib
.\opencv_lib\opencv_objdetect246d.lib
.\opencv_lib\opencv_photo246d.lib
.\opencv_lib\opencv_stitching246d.lib
.\opencv_lib\opencv_ts246d.lib
.\opencv_lib\opencv_video246d.lib
.\opencv_lib\opencv_videostab246d.lib
5. 在“C/C++”->“代码生成”->“运行时库”中,debug版选择MTd,release版选择MT。

以上设置完成后,编译即可。
PS:
1. 通常include和lib还可以在VS2008的“工具”->“选项”->“项目和解决方案”->“VC++目录”的“包含文件”中进行设置,但这样的设置是保存在VS2008中,而不是当前工程中,如果将整个工程拷贝到别的电脑上,还需要再次设置才能正确编译。而这里介绍的方式则不用再配置,可以直接修改和编译。
2. 这里使用了相对路径,其中“.”表示当前目录,“..”表示当前目录的上级目录。
3. opencv早一点的版本中可能并没有包含已经编译好的lib,所以需要自己编译。
4. 在使用opencv读avi文件时,发现cvCreateFileCapture总是返回空指针,研究半天才发现是因为opencv_ffmpeg.dll没有正确加载。opencv_ffmpeg.dll并没有相应的lib,所以仍然需要将该dll拷贝至工程目录下编译和运行。
让opencv程序在没有安装opencv的电脑上运行的更多相关文章
- 关于C++编译的程序无法在新一台电脑上运行总结
最近在调用一个SDK调试一个主板的DPIO. 可是编译好的程序在开发电脑上运行没问题,到了新主板建立的电脑系统上就出问题. 总结了下要注意一下几方面. 1:程序本身要没有问题.至少在开发电脑系统环境下 ...
- 【OpenCV第一篇】安装OpenCV
[OpenCV第一篇]安装OpenCV 本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子. <OpenCV入门 ...
- 如何在其他电脑上运行VS2005编译的DEBUG版应用程序
做项目的过程中,遇到这样的问题:在自己的电脑上用VS2005编译好的DEBUG版程序在其它的没有安装VS2005的电脑上没有办法运行,郁闷至极啊. 直 接拷贝文件后,错误信息如下:"This ...
- 编写简单的Mapreduce程序并部署在Hadoop2.2.0上运行
今天主要来说说怎么在Hadoop2.2.0分布式上面运行写好的 Mapreduce 程序. 可以在eclipse写好程序,export或用fatjar打包成jar文件. 先给出这个程序所依赖的Mave ...
- OpenCV 学习笔记 01 安装OpenCV及相关依赖库
本次学习是基于Window10进行的.语言为python3. 1 与opencv相关的库简介 1.1 numpy numpy 是 OpenCV 绑定 python 时所依赖的库,此意味着numpy在安 ...
- 如何生成能在没有安装opencv库及vs2010环境的电脑上运行的exe文件
项目基本算法已经完成,甲方需要一个可以运行的demo.目前,程序能在自己的电脑上正常运行.移植到其他win7系统上,运行失败. 寻找各种解决办法,baidu找到两个办法: 1.使用静态链接的方法,这种 ...
- 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行--转载
原文地址:http://funine.iteye.com/blog/2220359 (本文所有素材将在文章最后附上) 准备工具exe4j, converticon.com(用于制做.ico格式的图片) ...
- VS2008生成的程序无法在其它电脑上运行,提示系统无法执行指定的程序
经过一番查找,最给力的参考是 http://www.cnblogs.com/visoeclipse/archive/2010/02/27/1674866.html ------------------ ...
- 【Qt开发】【Linux开发】Qt程序在嵌入式设备(arm) 上运行,鼠标擦除界面的解决方案
笔者最近想在arm开发板上,开发一个应用程序,经过网上查询发现qt作为跨平台开发软件很不错,于是便选择了qt开发,笔者的qt版本是4.8.6的.由于arm的主频太低,在arm上进行开发编译,效率会大大 ...
随机推荐
- ProgressBar的简单使用
当我们的应用在进行耗时操作时,显示一个进度条呈现给用户,让用户知道当前进度是一个很好的体验,接下来我们就来简单了解下ProgressBar(本文主要针对初学者,大神可以绕开啦),先看效果图: 进度条P ...
- FORM中读取图片
1.创建ITEM 重要属性如下 item属性:图像 大小样式:调整 数据库项:否 2.读取触发器 在block级别,创建trigger READ_IMAGE_FILE('D:\'||:XX_EMOLY ...
- 【NPR】漫谈轮廓线的渲染
写在前面 好久没写文章.最近在看<Real Time Rendering, third edition>这本书,看到了NPR这一章就想顺便记录下一些常见的轮廓线渲染的方法. 在非真实感渲染 ...
- memcached实战系列(四)memcached stats命令 memcached优化
memcached提供一系列的命令进行优化的查看,方便我们调整我们的存储策略,查看我们的使用率,内存的使用率以及浪费情况.常用的命令有stats.stats settings.stats items. ...
- Hadoop:Hadoop单机伪分布式的安装和配置
http://blog.csdn.net/pipisorry/article/details/51623195 因为lz的linux系统已经安装好了很多开发环境,可能下面的步骤有遗漏. 之前是在doc ...
- 在Android Studio 上安装Genymotion插件
首先去官网http://www.genymotion.net/下载Genymotion并安装好. 其次打开AS的设置界面,找到Plugins插件目录 然后在搜索里搜Genymotion,然后点击Bro ...
- android:getSlotFromBufferLocked: unknown buffer: 0xf3d544c0
欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 今天运行一个小程序,退出的时候竟然打出一条错误log日志.一时慌乱,在国内网站也没找到合适的答复.通过查看国外的网站终于查到了原 ...
- Android LK Bootlaoder启动概览
LK - Little kernel 1. 起源地: bootable\bootloader\lk\arch\arm (1)rule.mk $(BUILDDIR)/trustzone-test-sys ...
- 【Unity Shaders】Reflecting Your World —— Unity3D中的遮罩反射(Masking Reflections)
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- Cocos2D:塔防游戏制作之旅(十六)
编译运行你的app,放置一些炮塔在你的地图上吧!你将看到炮塔在敌人移动如攻击范围时如何立即开始攻击,并且敌人的血条将随着攻击不断减少知道它们被人道毁灭!胜利即将来临了! 哦!Okay,这里只有少数细节 ...