WINDOWS下VS编译opencv并加载自定义模块

本人机器是windows x64,VS2013支持64位编译模块。

opencv编译安装步骤

  1. 下载cmake x64 windows 版本,下载opencv 2.4.13,分别解压至A,B目录;
  2. 进入A目录下bin目录,打开cmake GUI,分别指定opencv源码路径和生成工程的存储目录D(opencv源码路径为B目录下的sources文件夹),点击configuration,选择对应的vs版本(本人是visual studio 12 win64),再次点击configuration,直至没有红色高亮显示(本人在操作中状态栏中会提示版本不对,但似乎不影响后面操作)。然后点击generation,生成完成后就可以关闭cmake了;
  3. CMAKE生成结果:在D目录中得到vs的工程。
  4. 用vs打开"ALL_BUILD.vcxproj"工程,对ALL_BUILD分别进行Debug和Release模式下的生成,可以在D目录下新增bin、include、lib目录;对INSTALL分别在Debug和Release模式下进行生成,可在D目录下得到install目录(这个install目录内容是对INSTALL进行生成时,从之前编译结果目录复制过来的,因此和前面的编译生成相比,所花的时间少得多);
  5. 编译的结果就是获得install目录,你可以将install放于一个特定的目录,例如E目录(本人将其放在opencv的源码目录,即B目录)。

工程配置opencv步骤

  1. 向本机系统添加环境变量(path中添加E/install/v64/bin),让测试工程可以找到相关的dll;
  2. 在工程中进行属性配置,在DEBUG和RELEASE模式下分别配置C++目录的可执行文件目录(E目录下的install/x64/v12/bin)、包含文件(E目录下的install/include、install/include/opencv、 install/include/opencv2)、包含库文件(E目录下的install/x64/v12/lib),链接器的附加依赖项(一系列的.lib文件),然后就可以正常跟进opencv源码了。

自定义opencv模块引用

修改了opencv的sources->modules->legacy,想要建立的工程在使用legacy模块时,使用自己新修改的模块。

  1. 将opencv源码目录,即上文提到的B目录下的sources文件夹,找到modules/legacy,将其替换为新的legacy;
  2. vs打开opencv编译工程目录,即上文提到的D目录,再次打开“ALL_BUILD.vcxproj”,重新对ALL_BUILD进行Debug和Release模式下的生成,并对INSTALL进行生成;
  3. 将新生成的install目录替换前述的目录。

问题及解决

本人使用X64位机器,曾出现LNK1112错误:模块x86与目标机器x64不匹配的错误。首先需下载64位camke生成opencvx64平台下的工程,然后vs需支持64位编译模块,编译并得到64位下的opencv DLL。其次,在建立工程时需保证项目->链接器->高级->目标计算机选项是"X64";保证工程建立的平台(可通过系统属性管理器查看)是x64,如果只有win32则需要新建x64。

原文地址:https://www.cnblogs.com/imagezy/p/7059808.html