win10 Opencv4.5.0源码编译支持CUDA加速

目录

一、环境:

二、资源准备

三、release版编译

四、debug版编译

五、测试opencv-cuda能否使用


一、环境:

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;
}

运行程序能正常出图即可~

参考博客汇总,感谢这些可爱滴作者萌~

https://blog.csdn.net/qq_27278957/article/details/120283706?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link

win10使用vs2019从源码编译OpenCV4.5+cuda10.2+cudnn8.0的C++环境和Python环境_Keras深度学习-CSDN博客

无法打开 python36_d.lib 的问题_Sucon的专栏-CSDN博客_python36_d.lib

win10编译opencv4.2+conda+python3.7+cuda - 知乎

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值