OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建
[-= 博客目录 =-]
1-学习目标
1.1-本章介绍
因为不可抗力(╯﹏╰),最近去图书馆借了一本《OpenCV编程案例详解》,准备学习OpenCV的使用,因为身患懒癌,所以还是想通过博客的方式来督促自己学习吧,以后这个系列每周必有一篇(flag大旗已立)……
这篇博客之所以命名为零,是因为这是用来介绍怎么样搭建OpenCV的开发环境的。
1.2-实践内容
- homebrew安装
- 安装CMake
- 源码安装OpenCV
- xcode配置与测试
- 基础问题回答
1.3-相关说明
- 我使用的是Mac环境,所以为了方便我通过xcode来学习OpenCV的使用
2-学习目标
2.1-homebrew安装
这个网上很多嘛~
Homebrew - 安装与使用
2.2-使用homebrew安装CMake
安装了homebrew之后相当于安装了一个软件管家(命令行版2333),直接通过brew命令就可以安装大部分工具:
sudo brew install cmake //homebrew
默认的安装路径是:/usr/locat/Celler/
一般情况下,如果很久没有使用homebrew,他会更新软件包,所以请在网络良好的情况下使用,不然会……超慢。
更新homebrew也可以手动:
brew update
brew upgrade
2.3-源码安装OpenCV
第一步先上官网下载源码:https://opencv.org/releases.html
安装可以参考官网上的教程:https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
第二步编译源码文件:
1. cd ~/opencv
2. mkdir build
3. cd build
4. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
5. make
6. sudo make install
这里就简单粗暴的上步骤吧,当然我建议最好看看官网,关于cmake参数的设置,确认你所喜欢的安装方式,当然因为懒癌所以我就直接安装官网上的来了,以后也好找……
安装的整个过程在一个小时左右,应该大概也许因人而异吧~
2.4-xcode配置与测试
- 我们先create一个C++project,在工程右边选中BuildSettings,右边搜索框里输入search,找到Search Paths设置项。
- 找到Header&Library Search Paths(头文件搜索路径)
在里面输入如下路径
$(PROJECT_DIR) //这个代表你当前工程路径
/usr/local/include //这是之前默认cmake后OpenCV头文件放置路径
在Library Search Paths里输入
$(PROJECT_DIR) //这个代表你当前工程路径
/usr/local/lib //这是之前默认cmake后OpenCV库文件放置路径
这里使用的是xcode Version 9.3 (9E145)版本,在Search Paths设置中会有debug和release两个设置,弄成一样的就好。
如何设置多路径?只要双击框框,弹出一个详细框,左下角有个加号可以增加Search Paths。为什么要加$(PROJECT_DIR)
因为如果把这个项目移动到另一台机器上,如果没有这个,它可能会出现找不到库或者头文件(因为搜索路径不同)。加了$(PROJECT_DIR)
之后你只需要把library放到项目路径下就好,详细可以看Xcode Build Search Paths设置.
关于xcode更加直观的说明可以参考Mac平台上OpenCV开发环境搭建,以下是关于xcode项目的一段说明:
1.Open Xcode, choose New -> New Project -> Command Line Tool
2.Name it and select C++ for type
3.Click on your project from the left menu. Click the build settings tab from the top. Filter all. Scroll to Search Paths. Under header search paths, for debug and release, set the path to /usr/local/include
. Under library search paths, set the path to $(PROJECT_DIR)
. Finally, check if C++ standard library is libstdc++ or not, if not, change it to this!
4.Click on your project from the left menu. File->New->New Group
, Name the group OpenCV Frameworks.
5.Select the folder (group) you just labeled, OpenCV Frameworks in the left menu. Go to File -> add Files, Type /, which will allow you to manually go to a folder. Go to -> /usr/local/lib
6.Select both of these files, libopencv_core.dylib
, libopencv_highgui.dylib
, and click Add. (you may need to add other library files from this folder to run other code.)
7.You must include this line of code in the beginning of your main.cpp file:#include <opencv2/opencv.hpp>
很浅显的英文,大家应该都看得懂,为什么要放上来,主要是觉得原版比较看的比较直观。
3. 添加lib文件
我们在Build Phases里找到Link Binary With Libraries
,点击+号
下来我们找文件
因为我们之前安装的lib文件在/usr/local/lib/下,可视化的访问默认是隐藏的,所以我们使用commend+shift+G来search它:
找到后我们添加一些常用库:
搞定,可以开始测试了!
4. 测试
下面是网上找的测试代码:
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv) {
Mat image;
image = imread("/Users/mac/Pictures/loli.jpg", 1);
namedWindow("Display Image", WINDOW_AUTOSIZE);
imshow("Display Image", image);
Mat gray;
cvtColor(image, gray, COLOR_RGBA2GRAY);
namedWindow("gray");
imshow("gray", gray);
waitKey(0);
return 0;
}
大家注意string path = "/xxx/xxx/xxx.jpg";
这里需要自己设置一下。下面是效果图:
2.5-基础问题回答
- 关于之前编译源码文件的第四步,如果不行可以参考官方解决办法:
Usecmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
without spaces after -D if the above example doesn't work. - 在设置路径的时候遇到了很多问题:
OpenCV(3.4.1) Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /Users/mac/Study/OpenCV/opencv-3.4.1/modules/highgui/src/window.cpp, line 356
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: OpenCV(3.4.1) /Users/mac/Study/OpenCV/opencv-3.4.1/modules/highgui/src/window.cpp:356: error: (-215) size.width>0 && size.height>0 in function imshow
后面花了很多时间,查了很多资料,最后发现……只是路径输错了,Pictures
输错成Picture
搞半天才弄好,总之大家设置路径的时候一定要是绝对路径,而且要检查清楚,下面举几个例子:
mac里面可以是这样:/Users/mac/Pictures/loli.jpg
最好不要这样:~/Pictures/loli.jpg
windows: D:\\Pictures
对于用到一些函数感兴趣的可以参考:OpenCV从入门到放弃(四):HighGui组件细讲