opencv+opencv_contrib编译之惨痛教训

本人编译的是opencv3.4.1+opencv_contrib3.4.1+vs2017 15.8.0+cuda10.0
流程按照网上的下载cmake_gui那一套
1.

先添加opencv源码的路径和要build的路径
然后点configure
2.
在这里插入图片描述
选择自己的vs版本,本人因为没选win64导致了很多波折
3.
接着开始检测你的vs版本,msvc的版本
如果你在上面勾选了with_cuda,就会检测你的cuda版本
在这里插入图片描述
在这里插入图片描述
如果上面一片红,就要重新点configure,直到变成白色,
一般要勾选BUILD_opencv_world
这样最后在vs配置环境附加的时候只要两个opencv_world341.lib和opencv_world341d.lib就可以了
另外OPENCV_EXTRA_MODULES里写上opencv_contrib里的modules的路径
然后点configure,直到全部变白为止
4.点generate,
完成之后你会发现对应build的路径下面有个opencv.sln 用vs打开
并且右键批生成 勾选ALL_BUILD和INSTALL就可以了
接着就是漫长的等待过程了。一般要两个小时
5.成功之后你会发现build路径下面多了一个INSTALL,
你把里面的bin用环境变量配置好,include,×64这种在vs项目里面配置
你以为能用了**,结果告诉你找不到PDB文件**
如下图
在这里插入图片描述
你要把生成的opencv_world341.dll,opencv_world341d.dll拷贝到system32目录下面才行。

重点来了

不要盲目按照教程就自己的环境进行编译
因为很有可能失败
如下图
在这里插入图片描述
我本来用的是cuda9.0
结果在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include里面有个该死的host_config文件,里面有一行

#if _MSC_VER < 1700 || _MSC_VER >= 1911
#error – unsupported Microsoft Visual Studio version! Only the versions between 2013 and 2017 (inclusive) are supported!

这就导致了我明明用的是vs2017,它说不支持。
因为vs2017也有很多版本的
我用的15.8.0对应的是MSC_VER1915,所以特别冤
想看vs的版本,可以点帮助里面的关于
后来我下了一个cuda10.0才把问题解决了的,刚开始想偷懒把1911改成1920,然并卵
这是一个惨痛的教训。

提醒我们以后要三思而后行,切勿心浮气躁
另外vs2017自带了cmake,效果和cmake_gui是一样的

  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要基于 Android 的 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的源代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDK 和 Android SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台版本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试、测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值