上午学习到这个教程
【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的作用。
include
和 lib
对应下面 CMakeLists.txt 中的 2,4 行
# 添加OpenCV库
find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(First ${SOURCE_FILES}) # 指定生成目标
target_link_libraries(First ${OpenCV_LIBS}) # 链接库
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}) # 链接库