OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建


[-= 博客目录 =-]


1-学习目标

1.1-本章介绍

因为不可抗力(╯﹏╰),最近去图书馆借了一本《OpenCV编程案例详解》,准备学习OpenCV的使用,因为身患懒癌,所以还是想通过博客的方式来督促自己学习吧,以后这个系列每周必有一篇(flag大旗已立)……

这篇博客之所以命名为零,是因为这是用来介绍怎么样搭建OpenCV的开发环境的。

返回目录

1.2-实践内容

  1. homebrew安装
  2. 安装CMake
  3. 源码安装OpenCV
  4. xcode配置与测试
  5. 基础问题回答

返回目录

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配置与测试

  1. 我们先create一个C++project,在工程右边选中BuildSettings,右边搜索框里输入search,找到Search Paths设置项。

  2. 找到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-基础问题回答

  1. 关于之前编译源码文件的第四步,如果不行可以参考官方解决办法:

    Use

    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..

    without spaces after -D if the above example doesn't work.
  2. 在设置路径的时候遇到了很多问题:
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组件细讲

返回目录

3-资料

  1. Mac OSX10.10上搭建OpenCV3.2.0开发环境
  2. 搭建Mac上的OpenCV开发环境
  3. opencv_tutorial_linux_install
  4. Homebrew - 安装与使用
  5. cmake 那些事儿~
  6. cmake的一些基础知识
  7. Mac平台上OpenCV开发环境搭建
  8. 关于homebrew使用时遇到的问题: Error: Could not symlink bin/gdb/usr/local/bin is not writable.
  9. Xcode Build Search Paths设置
  10. OpenCV从入门到放弃(四):HighGui组件细讲

返回目录

OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建的更多相关文章

  1. Mac下R语言环境搭建

    Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...

  2. Python零基础学习系列之二--Python介绍及环境搭建

    1-1.Python简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像P ...

  3. Mac下git的环境搭建和基本使用

    前言本文将介绍git的基本概念.环境搭建.日常使用,主要针对刚接触git,或接触不久,或好久没用忘记的同学们,当然是基于mac环境的,window系统也是大同小异!本文将从以下几个模块介绍,希望能帮助 ...

  4. mac下Android开发环境搭建

    之前一段时间在学习ios的开发,近一段时间想着也接触下Android开发,以来加深对移动端开发的理解.这里根据自己配置Android开发环境的过程,比较详细的来总结下自己的安装过程,希望对一些正准备配 ...

  5. Mac下JAVA开发环境搭建

    最近开始学习JAVA, 首先配置下环境! 1.Mac自带的jdk版本老了,需要到oracle官网去下载新的jdk,具体下载那个版本看个人需求,然后安装.   安装完成之后打开Terminal, 执行命 ...

  6. 【Java学习系列】第1课--Java环境搭建和demo运行

    本文地址 分享提纲: 1. java环境的搭建 2. java demo代码运行 3.参考文档 本人是PHP开发者,一直感觉Java才是程序的王道(应用广,科班出身),所以终于下决心跟一跟. 主要是给 ...

  7. MAC下的XMPP环境搭建

    实现即时通信有多种方式,下面讲的是Mac下使用XMPP来实现. XML Messages Presence Protocol 可扩展消息处理协议 简单讲就是基于XML语言的点对点即时通信协议  原理: ...

  8. mac下java 开发环境搭建

    mac配置java开发环境: jdk1.7 +sdk1.7+maven +tomcat   1.先安装jdk ,才能安装sdk . 2 mac中jdk1.7的默认位置:/Library/Java/Ja ...

  9. mac下selenium+python环境搭建

    selenium2+python的环境搭建主要需要python和selenium 1.python mac下自带了python,可以查看版本.当然可以选择安装其它版本的python. 2.seleni ...

  10. MAC 下 STF 的环境搭建和运行

    STF --WEB 端批量移动设备管理控制工具 安装各种包 (首先安装Macport,因为后面需要用到port:http://www.ccvita.com/434.html) linux的基本包安装, ...

随机推荐

  1. linux安装memcached

    一:为什么要使用memcached 瓶颈:互联网发展,特别在web2.0兴起之后,传统数据库开始出现瓶颈 1:对数据库的高并发读写 2:对海量数据库的处理(海量数据查找)memcache 是高性能的分 ...

  2. 解决js跨域

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  3. Sql Server数据库备份脚本以及如何在阿里云云数据库RDS还原数据库(代码源自阿里云)

    今天研究阿里云服务数据库的迁移,备份和还原的时候,在阿里云web后台发现了一个很好用的sql脚本,就默默地偷了过来,它可以支持全量备份,差异备份和日志备份,代码解释也都很清楚,我也尝试着跑了一下,性能 ...

  4. November 24th 2016 Week 48th Thursday

    All the bright precious things fade so fast. 所有的光鲜靓丽都敌不过时间. What is permanent? Thoughts and ideas. P ...

  5. November 7th 2016 Week 46th Monday

    A friend is one who knows you and loves you just the same. 朋友是懂你并爱你的人. Friendship means inclusion, l ...

  6. Zeal——好用的离线 API 文档大全!

    介绍 作为一名程序员,工作中学习中免不了是要查询API文档的,毕竟我们能记住的东西有限,而且经常也会碰到某个API一时想不起来的情况,而每次还要打开网页去查询还是挺麻烦的,这时候拥有一个款好用的本地离 ...

  7. PHP设计模式系列 - 委托模式

    委托模式 通过分配或委托其他对象,委托设计模式能够去除核心对象中的判决和复杂的功能性. 应用场景 设计了一个cd类,类中有mp3播放模式,和mp4播放模式 改进前,使用cd类的播放模式,需要在实例化的 ...

  8. css画图那些事

    上一篇css3写了一些基本的图形,想到是不是能用css3画个动物,便在网上找图片.于是选中一只大鹏鸟 也不难,一步步的写出身体部位,再定位上去就好了.来一张效果图,后面给两个加了动画,稍微难看一点,后 ...

  9. golang xorm应用

    github.com/go-xorm/xorm  xorm库 http://www.xorm.io/docs/ 手册 xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便.xo ...

  10. BZOJ1022:[SHOI2008]小约翰的游戏John(博弈论)

    Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取 ...