目录
一、环境:
VS2015
Cmake
二、资源准备
1、下载opencv4.5.0
2、OpenCV-contrib4.5.0
下载该4.5.0版本的项目,【点我下载】
3、将opencv4.5.0下载的exe运行,将OpenCV-contrib4.5.0下载的zip解压,然后放到同一个文件夹下,例如下面
三、release版编译
1、上面主要方便大家下载文件,后续参照这个作者的方式,完全无问题(编译过程要好几个小时,请大家做好心里准备)。【点我继续】
我这里是VS2015,作者是V2019,但是没有太大影响,具体区别如下:
参考博客中的Bug我没有遇到,我在编译过程中遇到了两类问题,简单描述下(当时的错误没来得及截图,捂脸)
2、第一类错误:找不到某个lib,这个时候仔细看下报错路径的lib你有没有,具体设置路径的位置在,右键项目->属性->链接器->输入->附加依赖项(在这里把你lib的路径写对)
3、第二类错误:C1083 无法打开包括文件
例如:这些文件其实你opencv450里都有,可能位置不对,你自己从文件夹里找到这些文件,复制一份到报错文件的同一个文件夹下,就能解决鸟。
所有东西都成功后,其实我们只需要 install 目录中生成的即可,其他的文件都可以删除了。把 install 目录名称修改为gpu_build_release(我这里的路径用的D:\opencv450\opencv\gpu_build_release,因为D:\opencv450\opencv\bulid放的是cpu的opencv), 最后在windows中配置系统环境变量。
四、debug版编译
1、由于自身项目需要调试,所以这里也需要编一个debug版本的opencv。方法和上述release类似,只要把对应位置改成Debug ,右键项目->属性也需要改成debug
除此之外,链接器->输入->附加依赖项用的lib是xxxd.lib,如下图所示:
2、右键ALL_BUILD->生成,编译项目,这里也需要很久。
3、我在编译debug版本opencv过程中遇到了一个bug:
fatal error LNK1210: 已超过内部 ILK 大小限制;链接时使用 /INCREMENTAL:NO
原因是函数太多了,incremental linking(增量链接)的ILT表(Incremental Linking Table)超过了大小限制,opencv的debug库是为了被我们的debug程序调用,而不是修改opencv,所以并不需要增量链接。更多详细解释有兴趣的朋友可以看这里。
解决办法:编译之前建议先选中modules和tests performance文件夹下的红框中文件,选中后右键属性-》配置属性-》链接器-》常规-》启用增量链接-》改成否(/INCREMENTAL:NO)
再次编译ALL_BUILD,由于只剩下链接处理,很短时间就编译成功。
4、又遇到一个bug:
LNK1104 无法打开文件“python36_d.lib”
根据报错提示,我找到bindinds下面的opencv_python3,右键项目->属性->配置属性->链接器->输入->附加依赖项,可以看到我这里引的是D:\Users\panze\Miniconda3\libs\python36.lib,但是报错找的是python36d.lib。这是我去修改pyconfig.h文件,它和你刚刚找到的lib文件路径差不多在一个父级目录的include文件夹下,我的在这里D:\Users\panze\Miniconda3\include\pyconfig.h
修改pyconfig.h
修改前:
修改后:
并且注释:
然后重新编译ALL_BUILD就可以通过啦,啊哈哈哈哈哈哈!
6、老规矩,右键设置INSTALL为启动项目,然后生成进行编译INSTALL,生成install文件夹,这个才是我们最终需要滴。
7、最后咱只留下了install,并且改名为gpu_build_debug放在了opencv目录下,和release版本并列。
五、测试opencv-cuda能否使用
测试代码如下:
#include <iostream>
#include<opencv2/opencv.hpp>
int main(int argc, char* argv[])
{
cv::cuda::GpuMat img(400, 600, CV_8UC3, cv::Scalar(255, 0, 0));
cv::Mat cpuImg;
img.download(cpuImg);
cv::imshow("test", cpuImg);
cv::waitKey(0);
return 0;
}
运行程序能正常出图即可~
参考博客汇总,感谢这些可爱滴作者萌~
win10使用vs2019从源码编译OpenCV4.5+cuda10.2+cudnn8.0的C++环境和Python环境_Keras深度学习-CSDN博客