opencv静态编译与动态编译

上传人:鲁** 文档编号:457957507 上传时间:2024-02-02 格式:DOCX 页数:7 大小:397.95KB
返回 下载 相关 举报
opencv静态编译与动态编译_第1页
第1页 / 共7页
opencv静态编译与动态编译_第2页
第2页 / 共7页
opencv静态编译与动态编译_第3页
第3页 / 共7页
opencv静态编译与动态编译_第4页
第4页 / 共7页
opencv静态编译与动态编译_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《opencv静态编译与动态编译》由会员分享,可在线阅读,更多相关《opencv静态编译与动态编译(7页珍藏版)》请在金锄头文库上搜索。

1、一、序言当一个opencv工程实现之后,我们会面临一个问题,怎么把opencv程序的 exe在其他电脑上运行,这个问题已经有很多人遇到过,当然也有很多人给出了 博客,介绍了具体的解决方法,具体自己操作时,还是遇到了这样或者那样的小 毛病,不过凭借自己根据错误提示解决问题的能力,最后还是把静态编译给编译 成功了。本文介绍两种opencv程序移植到其他电脑运行的方法,一种是动态编译, 需要拷贝程序运行需要的dll,也就是-个exe跟着多个dll的模式,这种简单 粗暴,但是显得拖拖拉拉,一个程序还得跟着那么多其他文件,所以我们很不推 荐。另外一种就是本文主要介绍的静态编译,和之前运行不一样,我们在这

2、使用 的不是opencv的lib库,而是staticlib,编译成功之后,程序只需要拷贝一 个exe,就可以在其他电脑上运行。另外介绍一下本文测试程序工作的程序配置操作系统Win7IDEVS2010opencv 版本 opencv2.4.5二、动态编译为了做一个全面的总结,在这简单的介绍opencv动态编译的方法。opencv动态编译需要两部分dll:(1)opencv库的dll,检查你所引用的h文件,把对应的dll,拷贝过来就 行,注意debug和release的不同,当然一般程序发布的话都会用release版本 的,因为release版本比debug版本要快10倍有余。(2)考虑到目标终端

3、有可能没有装vs,所以需要拷贝msvcp110.dll和 msvcr110.dll (release 下),dll 在 C:/Windows/System32 下。三、静态编译静态编译主要的不同就是利用的是H:/Opencv2.4.5/opencv/build/x86/vc11/staticlib 文件下的 lib,而非 H:/Opencv2.4.5/opencv/build/x86/vc11/lib 文件夹。具体配置如下:1. 新建空项目,项目名称Static_Opencv7叨曰T! 1T4-E)fl -二KEg诟glE*妻型:V -H-iJll C l 1q rt 4立月气环t豆须e MF

4、C位段序si 5AIL cm厘win?项B哧心|匚4 +药芸珀Visul C+tWin32ut tlTllSZ i gEi Ith.K#STN;:如&皿15XAui-i u侦.mKE如!横 112. 新建cpp,写入一个简单opencv测试程序:#include #includeusing namespace cv;void main()( cv:Mat image = cv:imread(img1.png); cv:flip(image,image,1);cv:imwrite(flip.jpg,image);3. 新建一个属性管理器视图-属性管理器-Debug-右键-添加新项目属性表Etat

5、ic_Openci.- - Microsoft Visual 京udi苣退昊)文件旧翔旧视图CV) 项目囚生成调沛切 巨iQ 密 作,本增 Windows属性莒- Static_Clpe-ncv,毕XmaJ 已 Debug | Wii乒 MiboscdA Applicati 廿A Multi-byt X,Core Wir 无.:日 Release | Wi / Microsd 属性表名称改为 PropertySheetStaticOpencvdebug。 m=+* &tatic_Opencv褫址新项目属性表P.商E现有雇性表日移除Del妻峰MF2属性A Whole Program Optitn

6、ization/ Application乒 Multi-byte Character Sup-port夕 Core Windows Libraries4. 编辑属性表右键属性表-属性-VC+目录-包含目录,然后添加opencv的h文件目录:(pnv) is程甘也定+HO匹簸iflLt+*肆.碧土三岳Jfnitlw有号m 见 mrL.W-z-o=WTu41.疤二0=1寸0二七弓工tn,lMcl5E?p 匚 soLiEHT.口 在匚LAMJdM忐凸=WMA3rePKlnffltsEDAMxl三一书IWUE亏奁言上一 :血电电宅 ZA5MDLQiPHui.Ek p-54 亡 A?福 M.5.-.9s

7、mle%?=suj尝5项尸 wg.Eq_o_m料tlK-1*! 1*11*1 区匚strffmlftl s 备 F匚罗酣皿并tw皿3M 照叩故CX史% 串 35W - 盘|.蚌 3SSS康*州0|4f3OJVE招-H-L-JWCxmAi -i弟加MrtHJts-Kws-+U& 赭皿:M参蛆sjBWP Sr.qap.-T3.pd 曰/4-n+J5l4u心-Esr占leelI低lyI-c备一 一卅蚌E3-JSI_介绍一下这四个选项,多线程(/MT)为静态链接release模式,多线程调试(/MTd) 为静态链接debug模式,多线程dll (/MD)为动态链接release模式,多线程 调试DLL

8、(/MDd)为动态链接debug模式。5.最后在程序中添加#pragmatic,使用程序调用lib完整的程序如下:#include #include #pragma comment( lib, IlmImfd.lib)#pragma comment( lib, libjasperd.lib)#pragma comment( lib, libjpegd.lib)#pragma comment( lib, libpngd.lib)#pragma comment( lib, libtiffd.lib)#pragma comment( lib, zlibd.lib)#pragma comment( l

9、ib, opencv_core245d.lib)#pragma comment( lib, opencv_highgui245d.lib)#pragma comment( lib, vfw32.lib )#pragma comment( lib, comctl32.lib ) using namespace cv;void main()( cv:Mat image = cv:imread(img1.png);cv:flip(image,image,1); cv:imwrite(flip.jpg,image); 最后程序运行会出现很多warning,但是不影响运行,程序大小为7.5M ! 挺大的

10、,但是一个大程序,总比一个exe跟着多个dll好啊。1 -1J J J-r. JS _ id ./I i : link-FC.rradrXtlo92014/5/18 16;&7| ; linlc-FE.wn . 1 .tl-n g201J/S/1B 16; S7、main,objME/WWJ-r *1 jTLO& 文件:KBTIJOG g1 KB啊2 R沽174 KS*1 StatlcjDpencv.eiie. 314/6/LS I&5-/应用程序75S0KB|D StaticjOpencv.ilk2014/&/1B 16:S7ncrtrnentfll Link. 11,955 KB6.程序运行结果 原图:结果图:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号