QT中引入OpenCV库总结(qmake方式和cmake方式)

鼠扑  论坛元老 | 2025-1-10 17:16:08 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1998|帖子 1998|积分 5994

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前言

我的软件情况,写在前面


  • Windows10
  • QT5.12.12
  • VS2017
  • OpenCV4.5.4
opencv情况配置

一、opencv库获取的两种方式


  • 直接下载编译好的库
    最简朴版本无需自己编译,但是要注意opencv和VS的版本对应关系


  • 参考:Windows上Qt配置OpenCV(最简朴版本无需自己编译-避坑必看)

  • 源码编译


  • 参考:Windows下Visual Studio 编译OpenCV具体教程(win10+vs2017+opencv4.5.2)(OpenCV最新版)(特殊适合无法科学上网的童鞋们)
二、qmake和cmake配置

2.1、 qmake



  • 引入外部库
    两种方式:参考:详解Qt添加外部库
2.2、cmake

2.2.1、引入opencv示例

  1. cmake_minimum_required(VERSION 3.5)
  2. project(commandset_cmake LANGUAGES CXX)
  3. # 检查是否使用 MSVC 编译器
  4. if(MSVC)
  5.     # 添加 /utf-8 编译选项
  6.     add_compile_options(/utf-8)
  7. endif()
  8. # 设置C++标准
  9. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  10. set(CMAKE_AUTOUIC ON)
  11. set(CMAKE_AUTOMOC ON)
  12. set(CMAKE_AUTORCC ON)
  13. set(CMAKE_CXX_STANDARD 11)
  14. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  15. # 查找Qt5包
  16. find_package(Qt5 COMPONENTS Core Gui WebEngineWidgets WebSockets Sql MultimediaWidgets Widgets REQUIRED)
  17. # 包含子项目
  18. add_subdirectory(model)
  19. add_subdirectory(view)
  20. add_subdirectory(utilities)
  21. set(OpenCV_DIR "D:/OpenCV/OpenCV4.5.4/opencv/build")
  22. find_package(OpenCV REQUIRED)
  23. # 包含 OpenCV 头文件目录
  24. include_directories(
  25.     ${OpenCV_INCLUDE_DIRS}
  26.     ${OpenCV_DIR}/include
  27. )
  28. # 设置可执行文件的输出目录
  29. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)
  30. # 添加可执行文件
  31. add_executable(${PROJECT_NAME} ${ALL_SOURCES}
  32.     mainwindow.h
  33.     mainwindow.cpp
  34.     main.cpp)
  35. # 链接Qt5模块
  36. target_link_libraries(commandset_cmake PRIVATE
  37.     Qt5::Core
  38.     Qt5::Gui
  39.     Qt5::WebEngineWidgets
  40.     Qt5::WebSockets
  41.     Qt5::Sql
  42.     Qt5::MultimediaWidgets
  43.     ${OpenCV_LIBS}  # 关联OpenCV库
  44. )
  45. # 添加资源文件
  46. set(RESOURCES res.qrc)
  47. qt5_add_resources(QRC_SOURCES ${RESOURCES})
  48. # 将资源文件添加到可执行文件
  49. target_sources(${PROJECT_NAME} PRIVATE ${QRC_SOURCES})
复制代码
三、qt与opencv对应关系

VC版本号VS对应版本vc6VC6.0vc7VS2002vc7.1VS2003vc8VS2005vc9VS2008vc10VS2010vc11VS2012vc12VS2013vc13VS2014vc14VS2015vc15VS2017vc16VS2019 四、问题

  1. LNK2019        无法解析的外部符号 "void __cdecl cv::error(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,char const *,char const *,int)" (?error@cv@@YAXHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD1H@Z),函数 "public: class cv::Size_<int> __cdecl cv::MatSize::operator()(void)const " (??RMatSize@cv@@QEBA?AV?$Size_@H@1@XZ) 中引用了该符号        5.1        F:\Cuda Projects\5.1\5.1\kernel.cu.obj        1       
  2. LNK2019        无法解析的外部符号 "class cv::debug_build_guard::_InputOutputArray const & __cdecl cv::noArray(void)" (?noArray@cv@@YAAEBV_InputOutputArray@debug_build_guard@1@XZ),函数 main 中引用了该符号        5.1        F:\Cuda Projects\5.1\5.1\kernel.cu.obj        1       
  3. LNK2019        无法解析的外部符号 "public: __cdecl cv::Mat::Mat(void)" (??0Mat@cv@@QEAA@XZ),函数 "public: __cdecl cv::MatExpr::operator class cv::Mat(void)const " (??BMatExpr@cv@@QEBA?AVMat@1@XZ) 中引用了该符号        5.1        F:\Cuda Projects\5.1\5.1\kernel.cu.obj        1       
  4. LNK2019        无法解析的外部符号 "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ),函数 main 中引用了该符号        5.1        F:\Cuda Projects\5.1\5.1\kernel.cu.obj        1       
  5. ......
  6. 如果你的qt程序opencv库配置都没问题,报这个错的原因就是库版本的问题,查看opencv库中build下的x64文件夹下是vc14、vc15还是vc16,这很重要
复制代码
参考:LNK2019 无法解析的外部符号 “void __cdecl cv::error(int,class std::basic_string<char,struct std::…

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表