Mac 更换 CMake 的 OpenCV版本

上午学习到这个教程
【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/
Mac 更换 CMake 的 OpenCV版本_第1张图片

|路径|作用|
|:-:||
|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
Mac 更换 CMake 的 OpenCV版本_第2张图片

2. opencv 的 include 路径

/usr/local/include

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

/usr/local/Cellar/opencv3/3.2.0/include/opencv2
Mac 更换 CMake 的 OpenCV版本_第3张图片

3. opencv 的 lib 路径

/usr/local/lib

lib 中的文件已经链接到 opencv3


Mac 更换 CMake 的 OpenCV版本_第4张图片

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}) # 链接库

你可能感兴趣的:(Mac 更换 CMake 的 OpenCV版本)