美文网首页CV工具
Mac 更换 CMake 的 OpenCV版本

Mac 更换 CMake 的 OpenCV版本

作者: 谢小帅 | 来源:发表于2017-07-17 12:49 被阅读484次

    上午学习到这个教程
    【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整

    Mac上的Clion一直报这行有错

    Mat bw = threshval < 128 ? (img < threshval) : (img > threshval);
    

    说什么

    class matexpr is not compatible with class mat
    

    谷歌了一通,云里雾里的。

    后来我直接把教程上的代码放在windows虚拟机里运行可以了
    终于发现了原因

    要用OpenCV3 !

    我这才发现我的Clion中的OpenCV版本是 2

    brew 版本更换

    $ brew unlink opencv
    Unlinking /usr/local/Cellar/opencv/2.4.13.2... 68 symlinks removed
    $ brew ln opencv3 --force
    Linking /usr/local/Cellar/opencv3/3.2.0... 58 symlinks created
    

    首先要了解 Homebrew 中的路径结构 Homebrew 路径

    /usr/local/
    

    |路径|作用|
    |:-:||
    |Cellar|文件夹存放的是所有 包安装所在路径,包括二进制,文档和配置文件,按照这样 Cellar/包名/版本号/ 的形式来安放,如下文opencv的目录。
    |include|包相关 头文件,如 #include "opencv2/imgproc/imgproc.hpp"
    |lib|包相关 库文件,如 libopencv_imgproc.3.2.0.dylib
    |bin|包安装之后二进制文件
    |share|包安装之后的文档文件
    |etc|包的配置文件
    |Homebrew|brew 程序所在路径
    |opt|由于版本号随着跟新而改变的,所以需要一个固定不变的路径作为我们访问二进制和文档 的路径,这就是opt的作用。

    includelib 对应下面 CMakeLists.txt 中的 2,4 行

    # 添加OpenCV库
    find_package(OpenCV)
    include_directories(${OpenCV_INCLUDE_DIRS})
    
    add_executable(First ${SOURCE_FILES}) # 指定生成目标
    target_link_libraries(First ${OpenCV_LIBS}) # 链接库
    

    include搜索路径 & 库搜索路径

    1. opencv 的 Cellar 安装目录

    /usr/local/Cellar
    

    2. opencv 的 include 路径

    /usr/local/include
    

    更改之后 include 中 opencv 和 opencv2 链接到

    /usr/local/Cellar/opencv3/3.2.0/include/opencv2
    

    3. opencv 的 lib 路径

    /usr/local/lib
    

    lib 中的文件已经链接到 opencv3


    4. CMakeLists.txt

    内容不用变,Reload 即可~

    cmake_minimum_required(VERSION 3.7) # CMake最低版本号要求
    project(First) # 项目信息
    
    set(CMAKE_CXX_STANDARD 11) # 指定c++版本
    set(SOURCE_FILES main.cpp) # 指定要执行的源文件
    
    # 添加OpenCV库
    find_package(OpenCV)
    include_directories(${OpenCV_INCLUDE_DIRS})
    
    add_executable(First ${SOURCE_FILES}) # 指定生成目标
    target_link_libraries(First ${OpenCV_LIBS}) # 链接库
    

    相关文章

      网友评论

      • 迷失的峥:我也遇到同样的问题了,在opencv2里这样写就对了
        Mat bw;
        bw = threshval < 128 ? (img < threshval) : (img > threshval);
        谢小帅:我一开始用的是OpenCV2,这一行总是报错,后来我把库换成了3才OK的,虽然浅墨的教程里好像也是OpenCV2,我之所以换3是因为原来的代码放在了VS下面的一个opencv项目里就能跑,那个项目用的3,所以我就把clion的库换成opencv3了

      本文标题:Mac 更换 CMake 的 OpenCV版本

      本文链接:https://www.haomeiwen.com/subject/opufkxtx.html