mac系统怎么编opencv_[openCV]Mac平台下openCV的搭建(Xcode + openCV 2.4.10)

1.序言

从今天开始,开始使用Mac来跑openCV了。开始感觉其实应该开发阻力不是太大样子,事实上来讲,其实比Windows要繁琐一些呢。现时点的配置为

os x yosemite 10.10.3

openCV 2.4.10(现时点的最新版本为:3.0 RC1)

Xcode Version 6.3.2 (6D2105)

在这个配置下,我按照如下步骤搭建了我的openCV平台。

2.配置环境的步骤

2.1 openCV的选择

刚才也说了,现时点openCV的最近版本为openCV 3.0 RC1。我一开始也选择了使用openCV 3.0 RC1,然而在配置完之后,程序编译无法通过,有一个头文件貌似无法找到。当时也忘记了截图,后续等3.0 RC1更新后,我再尝试更新吧,那时候有还是有问题的话,我再把截图放上来。

2.2 安装openCV的前置准备

安装brew

这个软件挺强大的,是Mac平台下一个套件的管理工具。可以使用一个命令,就可以来install与uninstall一个套件。其官网(http://brew.sh/index_zh-cn.html)写了入手的方法。

在终端窗口中,输入如下脚本

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装CMake

CMake是一个跨平台的编译工具,这个也是一个必须的工具。由于我们安装了Homebrew,此时就可以在终端里输入以下命令,来install CMake。

sudo brew install cmake

这里需要权限。

IDE的选择:Xcode的安装

其实这里有很多的选择,我选择了使用Apple自带的Xcode去进行openCV的运行。这里挺简单的,直接download就可以了。

2.3 openCV的安装

从这里开始进行openCV的安装,首先将下载好的zip文件解压,放到特定的路径下。终端内,通过命令cd进入到该路径下。然后执行下列代码

cd

mkdir release

cd release

cmake -G "Unix Makefiles" ..

make

按照以上步骤,可以将openCV安装好。这里有个问题,我使用openCV 2.4.10安装的时候,有个地方会跳两个Error。

error: comparison of array ‘this->latestPoints‘ not equal to a null pointer is always true

[-Werror,-Wtautological-pointer-compare]

if (latestPoints != NULL)

error: address of array ‘this->latestCounts‘ will always evaluate to ‘true‘ [-Werror,-Wpointer-bool-conversion]

if( latestCounts )

这两个Error来自于calibfilter.cpp这个文件,需要修改里面的一部分代码之后,就能通过安装了。具体的可以参考这个博客,说的很详细了。

按照这里面的链接,在指定的几个地方修改代码之后,就可以安装上openCV 2.4.10了。

在路径/usr/local/include下会生成opencv与opencv2子文件夹,里面包含了许多opencv的头文件。

在路径/usr/local/lib下也会生成opencv的相关的库。

2.4 openCV的卸载

卸载也挺简单,回到release目录下,执行命令sudo make uninstall就妥妥的了。然后,需要手动清理一下/usr/local/这个目录下,关于opencv的一些相关文件。

3.在Xcode下建立一个openCV project

首先打开事先准备好的Xcode,在下面这个一个界面里选择OS X -> Application -> Command Line Tool

ec5c52e78293532504a5faaa971551a3.png

填写自己的product的名字,然后选则语言为C++。

4633f393eaa41e87850f5f4a76866d4f.png

需要为新建的工程指定Header搜索路径。这里,填入/usr/local/include与/usr/local/include/opencv就可以了。

a5e096036e21f407711ba56def8655bf.png

需要为新建的工程指定Library搜索路径。这里,填入/usr/local/lib

0d39b8a41e1f2d2c8ec5a2537554df13.png

这里其实还需要check一下 C++ standard library 是否为libstdc++。

最后,为工程添加所必须的.dylib文件。在工程下新建个文件夹openCV_Frameworks,右键选择Add Files to..

808a871a95539f1944a879775f3adc15.png

转到路径/usr/local/lib内去寻找程序必须的.dylib文件,这里为了方便,我将所有的.dylib文件都添加入了工程内。

到此为止,mac下使用Xcode就可以开是进行openCV的开发了。测试用代码如下所示,从Mac自带的摄像头读入图像,然后canny提取了边缘然后显示。

//

// main.cpp

// Camera_Capture

//

// Created by zhoufan on 15/5/24.

// Copyright (c) 2015年 zhoufan. All rights reserved.

//

#include

#include

#include

#include

using namespace std;

using namespace cv;

IplImage* doCanny(IplImage* image_input,

double lowThresh,

double highThresh,

double aperture)

{

if(image_input->nChannels != 1)

return (0);

IplImage* image_output = cvCreateImage(cvGetSize(image_input),

image_input->depth,

image_input->nChannels);

cvCanny(image_input,image_output,lowThresh,highThresh,aperture);

return(image_output);

}

int main(int argc, char* argv[])

{

cvNamedWindow("Camera" , CV_WINDOW_AUTOSIZE );

CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY);

assert(capture != NULL);

IplImage *frame = 0;

frame = cvQueryFrame(capture);

IplImage *frame_edge = cvCreateImage(cvGetSize(frame),

IPL_DEPTH_8U,

1);

while(1)

{

frame = cvQueryFrame(capture);

if(!frame) break;

cvConvertImage(frame,frame_edge,0);

frame = cvCloneImage(frame_edge);

frame_edge = doCanny(frame_edge,70,90,3);

cvShowImage("Camera",frame_edge);

char c = cvWaitKey(15);

if(c == 27) break;

}

cvReleaseCapture(&capture);

cvReleaseImage( &frame_edge );

cvReleaseImage( &frame);

return (int)0;

}

执行结果如下图所示。

f6cbee6262e638666060be78d388a060.png

4.结言

到此,已经可以在Xcode下愉快的和openCV君玩耍了。其实想说的是,在安装openCV 2.4.10的时候,还是会弹出一些warring, 或许在以后的开发中,会有些问题吧。嘛,到时候再说咯。

参考文献

=============更新日志===================

2015 - 5 - 25 初版

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值