接着上一篇博客继续分析:
在电脑上同时安装了opencv3和opencv4,那么问题来了,在做项目的时候,使用opencv3的时候CmakeLists.txt文件如何书写,使用opencv4的时候CmakeLists.txt文件又该如何书写呢,且看接下来的讲解!!!!!!
以运行高博第二版十四讲中的第八讲的工程的为例进行讲解:
使用opencv3时,CmakeLists.txt应该这样书写:(具体的语法细节相比大家已经非常熟悉了)

cmake_minimum_required(VERSION 2.8)
project(ch8)set(CMAKE_BUILD_TYPE "Release")
add_definitions("-DENABLE_SSE")
#使用时最好将-march=native去掉,防止报内存错误
set(CMAKE_CXX_FLAGS "-std=c++11 ${SSE_FLAGS} -g -O3 -march=native")find_package(OpenCV 3.0.0 REQUIRED)
find_package(Sophus REQUIRED)
find_package(Pangolin REQUIRED)include_directories(${OpenCV_INCLUDE_DIRS}${G2O_INCLUDE_DIRS}${Sophus_INCLUDE_DIRS}"/usr/include/eigen3/"${Pangolin_INCLUDE_DIRS}
)add_executable(optical_flow optical_flow.cpp)
target_link_libraries(optical_flow ${OpenCV_LIBS})add_executable(direct_method direct_method.cpp)
target_link_libraries(direct_method ${OpenCV_LIBS} ${Pangolin_LIBRARIES})

当然了,上述代码如果不修改成opencv4的cmakeList肯定是编译不过了,在这里只是告诉大家如何分别书写两个opencv版本的cmakeLists文件。
下面是opencv4的书写方法:

cmake_minimum_required(VERSION 2.8)
project(ch8)set(CMAKE_BUILD_TYPE "Release")
add_definitions("-DENABLE_SSE")
set(CMAKE_CXX_FLAGS "-std=c++11 ${SSE_FLAGS} -g -O3 -march=native")
set(${OpenCV_INCLUDE_DIRS} "/home/s/opencv_4_install/include/opencv4/opencv2/")
set(${OpenCV_LIBS}  "/home/s/opencv_4_install/lib/")
find_package(OpenCV 4.1.1 REQUIRED)
find_package(Sophus REQUIRED)
find_package(Pangolin REQUIRED)include_directories(${OpenCV_INCLUDE_DIRS}${G2O_INCLUDE_DIRS}${Sophus_INCLUDE_DIRS}"/usr/include/eigen3/"${Pangolin_INCLUDE_DIRS}
)add_executable(optical_flow optical_flow.cpp)
target_link_libraries(optical_flow ${OpenCV_LIBS})add_executable(direct_method direct_method.cpp)
target_link_libraries(direct_method ${OpenCV_LIBS} ${Pangolin_LIBRARIES})

与opencv3不同的就是以下几句代码:

set(${OpenCV_INCLUDE_DIRS} "/home/s/opencv_4_install/include/opencv4/opencv2/")
set(${OpenCV_LIBS}  "/home/s/opencv_4_install/lib/")
find_package(OpenCV 4.1.1 REQUIRED)

其中set(${OpenCV_INCLUDE_DIRS} "/home/s/opencv_4_install/include/opencv4/opencv2/") set(${OpenCV_LIBS} "/home/s/opencv_4_install/lib/")
这两句话是为了让编译器可以找到opencv4.1.1的头文件和库文件,因为我们是把opencv4安装在/home/s/opencv_4_install(参考的上一篇博文,安装路径设置成自己的路径)这个路径下,而不是默认的路径(默认路径为/usr/local/)下所以需要重新设置两句环境变量,防止系统默认去找opencv3的头文件和库文件。find_package(OpenCV 4.1.1 REQUIRED)这句话我就不再赘述了。
至此就可以实现opencv3和opencv4的来回自如的切换了。
最后罗嗦一下,编译如果报error: ‘CV_GRAY2BGR’ was not declared in this scope的错误
只需要在cpp文件中加入#include <opencv2/imgproc/types_c.h>这句话即可完美编译

如何在项目中区分使用opencv3和opencv4而不会产生冲突相关推荐

  1. Spring项目中,为什么要区分PO对象,VO对象,DTO对象?有什么作用?

    相信大家在平时项目中都会用到PO对象,DTO对象,VO对象,但是为什么要区分这几种对象呢?他们分别有什么作用呢? PO对象是指的持久化对象,PO中的字段是和数据库表中的字段一一对应的,一般是DAO层或 ...

  2. python3项目源代码下载_人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物,-opencv3《欢乐颂》...

    人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频<欢乐颂>中人物,-opencv3<欢乐颂> 效果图 源代码import os im ...

  3. 新的MOVE结构,和在项目中实际的感受

    关于MVC/MVP的瑕疵 MVC 和 MVP是最简单,最脍炙人口的框架结构. 有一段时间, 凡事有一定规模的代码,我都会架在上面,甚至后台程序也不例外(预留出可以注册的用户交互接口,作为后台控制器). ...

  4. java手机界面太小_手机端页面在项目中遇到的一些问题及解决办法

    原标题:手机端页面在项目中遇到的一些问题及解决办法 来源:键盘上的眼泪 segmentfault.com/a/1190000015178877 1.解决页面使用overflow: scroll在iOS ...

  5. boot项目中pom依赖已经删除了但是maven上还是报红线_Java Web项目是怎么跑起来的?...

    良心公众号 关注不迷路 01 简单Java程序的启动过程 在之前的HelloWorld是怎么跑起来的?一文中,我们一起学习了IDE执行简单的Java程序的过程.可以总结为如下三个步骤: 首先,将程序通 ...

  6. map和foreach的区别和应用场景_浅析项目中常用的 VO、DTO、DO、PO的概念、区别和用处...

    概念: 模型: VO与DTO的区别 VO与DTO的应用 DTO与DO的区别 DTO与DO的应用 DO与PO的区别 DO与PO的应用 本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和P ...

  7. 在原有Android项目中快速集成React Native

    前言 对于现有的大多数项目来说都不是从头构建的,而要在原有项目的基础上引入React Native则肯定和用react-native init xxx创建工程不同.因此下面就来说下具体操作.不过在真正 ...

  8. 一个项目中能提出哪些数据库优化_如何有效进行项目集管理?

    随着企业的扩张,业务往来日益增多,企业同时开展多个项目是不可避免的,如何有效进行多项目管理,是许多企业急需解决的问题. 这一趋势导致多项目管理角色的兴起.它与项目高效和谐地配合,为企业的快速发展提供了 ...

  9. cd返回上一 git_PHP项目中应用CI/CD的碎碎恋!

    点击上方"架构艺术",每日干货! 作者:晶晶 原文链接:https://blog.jjonline.cn/linux/239.html DevOps漫谈:谈一谈在PHP项目如何应用 ...

最新文章

  1. SAP RETAIL 如何确定自动补货触发的单据类型 II
  2. 「模型解读」浅析RNN到LSTM
  3. boost::type_erasure::typeid_of相关的测试程序
  4. 十招搞定SQL2K安全
  5. 4G发牌或提早 电信联通面临艰难抉择
  6. **python基础类和对象(十二)
  7. vue项目首屏加载过久处理笔记
  8. 从 HTTP 到 HTTPS - 什么是 HTTPS
  9. 总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
  10. 研磨设计模式 - 关于单例模式
  11. 详解Python中re.sub
  12. C语言的源代码文件、目标文件和可执行文件
  13. 10、Halcon图像条形码和二维码识别
  14. 夸计算机老师的成语,赞美老师的成语句子
  15. GhostScript 沙箱绕过(命令执行)漏洞(CVE-2018-19475)复现
  16. Unity任意版本Vuforia插件下载
  17. 查看MySQL初始密码并修改
  18. cf C. Counting Kangaroos is Fun
  19. Validation and Data leakages
  20. matlab ifft 后是复数,在matlab和numpy中使用ifft会产生不同的结果

热门文章

  1. PowerBUS 双总线收发器
  2. 微弱信号检测中四种降噪滤波方法的matlab实现
  3. Java项目:物流快递管理系统(java+SSM+jsp+mysql)
  4. 快速迁移可持续使用的开发环境
  5. libnet编译linux,求助,libnet函数库的应用问题?出现 undefined reference to `libnet_init'错误。...
  6. 路由器重温——DHCP/DNS服务配置管理-3
  7. 如鹏网.Net三层架构第一章三层基础
  8. 10大排序算法时间复杂度和空间复杂度总结
  9. 2016云栖大会即将开幕,阿里聚安全邀您共同见证盛典
  10. Android 高仿QQ 好友分组列表