opencv4.7.0 win10 源码编译 vs2019 cmake

步骤:

① 编译opencv源码;注意几个下载内容;根据cmakedownloadlog.txt中的说明

② 生成opencv.sln,先使用ALL_BUILD生成

③ 然后对install工程进行生成

④ 使用:离线使用,opencv文件夹 install的include lib bin 等复制到当前工程下的文件夹;然后配置属性
    配置属性时注意一下路径,工程属性为.vcxproj 文件所在路径;去找相对路径时,其基础路径不一样,注意。

⑤ 编译成功,debug调试;成功



0. cmake配置

  • 取消TEST工程生成;
  • 取消CUDA选项
  • 勾选opencv_world选项
  • 填入contrib路径:OPENCV_EXTRA_MODULES_PATH

 


遇到下载问题如下:

1. ippicv

  •  解决方法:打开opencv-4.7.0-build下的CMakeDownloadLog.txt文件,依次下载相应文件到相应文件夹;且命名格式为87974*

2. ffmpeg

 

  •  cmake成功;

3. 添加contrib路径;

  • 勾选Build->Build_opencv_world:Build下面,此处勾选BUILD_opencv_world是为了后续在生成OpenCV动态库的时候,会生成一个总的opencv_world的库,不然每个模块都会生成一个库,使用比较麻烦
  • 此处在OPENCV_EXTRA_MODULES_PATH地方添加opencv_contrib里面的modules模块路径,用来集成该部分源代码。
  • 生成Opencv.sln,点击All-Build工程,生成;

3.1 wechat_qrcode下载代码屏蔽 

3.2 屏蔽 xfeature2d的两个cmake的下载内容,然后根据CMakeDownloadLog.txt链接下载相应文件

3.3 testdata/cv/face/face_landmark_model.dat

下载后放在相应文件夹后,configure done。成功;开始生成工程

3.4 没有VTK路径,WITH_VTK取消勾选

A library with LAPACK API not found. Please specify library location.
VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
CMake Error at cmake/OpenCVModule.cmake:356 (_glob_locations):
  Syntax error in cmake code at

    J:/opencv/opencv-4.7.0/cmake/OpenCVModule.cmake:356

  when parsing string

    J:\opencv\opencv_contrib-4.7.0\modules

  Invalid character escape '\o'.
Call Stack (most recent call first):
  cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
  CMakeLists.txt:951 (ocv_register_modules)

3.5 contrib路径问题:Invalid character escape '\O'  右划线不行,得要左划线

Invalid character escape '\O'. Call Stack (most recent call first): modules/CMakeLists.txt:7 (ocv__静待花开s0的博客-CSDN博客

A library with LAPACK API not found. Please specify library location.
CMake Error at cmake/OpenCVModule.cmake:356 (_glob_locations):
  Syntax error in cmake code at

    J:/opencv/opencv-4.7.0/cmake/OpenCVModule.cmake:356

  when parsing string

    J:\opencv\opencv_contrib-4.7.0\modules

  Invalid character escape '\o'.
Call Stack (most recent call first):
  cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
  CMakeLists.txt:951 (ocv_register_modules)

4. 解决方案报 LNK1104 无法打开文件 “python38_d.lib”

win10下用 Visual Studio 2019 重新生成 OpenCV 解决方案报 LNK1104 无法打开文件 “python38_d.lib”_ZChen1996的博客-CSDN博客_无法打开 python38_d.lib

 原因: 这是因为使用的 python 是 Release 版,而编译是在 Debug 模式下编译的(Release 模式下没有此问题)

在 python 的安装位置找到 include 文件夹,在文件夹下找到 pyconfig.h 文件
因为我用的是anaconda3装的,所以我的 pyconfig.h 位置为 D:\Programs\anaconda3\include\pyconfig.h

将 comment(lib,"python38_d.lib") 改为 comment(lib,"python38.lib")
————————————————
版权声明:本文为CSDN博主「ZChen1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ZChen1996/article/details/115998472

编译成功,Done!

使用编译的opencv库进行源码debug

VS + OpenCV + cmake,源码编译,使用及调试_拜阳的博客-CSDN博客_vs+opencv+cmake

 源码opencv编译后会生成一些.pdb的文件,这些文件是调试的关键。

  • 在VS解决方案管理器展开CMakeTargets,右键点击INSTALL,然后点击生成。之后会将我们需要用到的东西全部放在D:\software\opencv-4.4.0\build_vs2019\install文件夹下,包括以下内容:
    (1) include,头文件
    (2)x64/vc16/bin,dll文件
    (3)x64/vc16/lib,lib文件
  • install文件夹下所有的东西在其他地方都存在,比如dll文件在D:\software\opencv-4.4.0\build_vs2019\bin\Release,lib文件在D:\software\opencv-4.4.0\build_vs2019\lib\Release,但是头文件比较零散。INSTALL项目只是将这些我们调用OpenCV时需要用到的所有文件统一拷贝到了一个地方,省得自己找来找去。

直接将工程拷贝给别人使用

  • 将opencv文件拷贝到VS工程文件夹下。这样将后续配置路径成相对路径,那么当把工程文件拷贝给别人后,别人不需要额外配置就可以直接打开运行;
  • 如果把所有的dll lib 头文件都放在一个地方,每次使用绝对路径进行后续配置,那么拷给被人后就会很麻烦

 成功进入源码

其它问题

并行库和动态库没有安装!具体有:ONETBB TBB OPENMP

 下载TBB,添加了TBB路径;勾选了with_openmp, with_ipp;然后重新configure,重新生成INSTALL工程;

[ INFO:0@4.497] global registry_parallel.impl.hpp:96 cv::parallel::ParallelBackendRegistry::ParallelBackendRegistry core(parallel): Enabled backends(3, sorted by priority): ONETBB(1000); TBB(990); OPENMP(980)
[ INFO:0@4.497] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load H:\opencv_code\OpencvTest\opencv\bin\opencv_core_parallel_onetbb470_64d.dll => FAILED
[ INFO:0@4.497] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_onetbb470_64d.dll => FAILED
[ INFO:0@4.498] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load H:\opencv_code\OpencvTest\opencv\bin\opencv_core_parallel_tbb470_64d.dll => FAILED
[ INFO:0@4.498] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_tbb470_64d.dll => FAILED
[ INFO:0@4.498] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load H:\opencv_code\OpencvTest\opencv\bin\opencv_core_parallel_openmp470_64d.dll => FAILED
[ INFO:0@4.499] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_openmp470_64d.dll => FAILED

https://ask.csdn.net/questions/7609851

 检查OpenCV是否使用TBB库编译_opencv tbb_TracelessLe的博客-CSDN博客

  • TBB是为了多核处理器软件开发的C++模板库;作用是opencv在任务处理中使用多线程加速。
    • 注意拷贝tbb12_debug.dll库的时候,拷贝64位的就可以了。(我拷贝成了32位的,一度bug)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值