网上已经有好多教程了,不同之处是系统版本、VS版本、OpenCV版本。
本文证实VS2010还是能编译OpenCV-3.1.0,只是需要修改部分内容。同时,XP+VS2010,越新版本的OpenCV,error就越多,越不好解决。
编译opencv
步骤如下:
1、安装好VS2010。
2、可以安装Eigen3,计算矩阵有用,但不是必须。Python3.4
3、opencv.org下载最新的OpenCV代码包。到github.com/opencv/opencv_contrib/releases下载附加包。
自己新建一个文件夹opencv-3.1.0,文件夹内应该有opencv-3.1.0(源文件包)和opencv_contrib-3.4.1(附加包)。新建build(编译)文件夹存放编译中的缓存文件和编译生成文件。
4、cmake.org安装cmake
5、运行cmake,配置两个路径,分别是opencv-3.1.0(源文件包)和build(编译)文件夹。点选Configure
途中会下载部分文件,较大的文件可能下载失败。通常ippicv这个就会出错,根据红色字体提示,打开build/CMakeDownloadLog.txt查找相关路径,用浏览器下载后,放到opencv-3.1.0\opencv-3.1.0\.cache\ippicv内。要将文件名前加入校验码。
6、Cmake中Configure一次后,界面多了参数和路径显示如上图,需要手动添加的是OPENCV_EXTRA_MODULE_PATH。路径需要添加到opencv-3.1.0\opencv_contrib-3.1.0\modules
新增附加包后,Configure过程中又下载了部分文件,其中tinydnn、face_landmark_model.dat都是比较容易下载失败的。下载路径和应该修改的名字和文件系统内的路径都可以在CMakeDownloadLog.txt中找到。
7、我还勾上了INSTALL_PYTHON_EXAMPLES和INSTALL_C_EXAMPLES
8、Generate。
出现的error
编译错误,需要手动修改的:
无法打开 python36_d.lib 的问题
https://blog.csdn.net/zhuxukang/article/details/79614335
error C2668: “pow”: 对重载函数的调用不明确
主要是函数具有多个不同参数类型的版本。把输入参数都定义为(float)即可。
之后编译就没有出错了。
本想编译opencv-3.4.1的,编译有多个错误难以解决……
为工程添加路径
新建工程,添加相关路径
1、include
配置属性->VC++目录->包含目录,修改后:
D:\OpenCV\opencv-3.1.0\opencv\build\install\include\opencv2;D:\OpenCV\opencv-3.1.0\opencv\build\install\include\opencv1;D:\OpenCV\opencv-3.1.0\opencv\build\install\include;$(IncludePath)
配置属性->VC++目录->库目录,修改后:
D:\OpenCV\opencv-3.1.0\opencv\build\install\x86\vc10\lib;$(LibraryPath)
2、库文件lib
这几行python代码可以帮忙输出目录内所有文件
import os
from os.path import join, getsize
libdir = 'D:\\OpenCV\\opencv-3.1.0\\opencv\\build\\install\\x86\\vc10\\lib'
for root, dirs, files in os.walk(libdir):
for name in files:
print( name )
把所有lib文件都添加到配置属性->链接器->输入->附加依赖项
3、没有找到opencv_core310d.dll。。。
参考https://blog.csdn.net/nick_m276/article/details/11947915
将D:\OpenCV\opencv-3.1.0\opencv\build\install\x86\vc10\bin下的该程序需要的.dll文件拷贝到工程项目的Debug下,解决问题。