一、安装OpenCV
在Mac下安装OpenCV可以通过下载源码自己编译安装,也可以通过像MacPorts或Homebrew这样的软件包管理器进行安装。本篇文章使用Homebrew安装,所以确保已经安装了Homebrew。
打开Terminal,输入安装opencv的命令:
brew install opencv
提示以下错误:
Error: No available formula for opencv
Searching taps...
homebrew/science/opencv
意思就是没有适用于opencv的服务。接着它搜索扩展服务,搜到了homebrew/science/opencv。继续安装之前,需要先添加homebrew/science扩展服务,命令如下:
brew tap homebrew/science
安装结束后,输入brew install opencv继续安装opencv。
opencv支持以下编译选项:
--32-bit Build 32-bit only --c++11 Build using C++11 mode --with-ffmpeg Build with ffmpeg support --with-java Build with Java support --with-openni Build with openni support --with-qt Build the Qt4 backend to HighGUI --with-tbb Enable parallel code in OpenCV using Intel TBB --without-eigen Build without eigen support --without-opencl Disable gpu code in OpenCV using OpenCL
如果想安装qt和tbb支持的opencv,执行以下命令:
brew install opencv --with-tbb --with-qt
安装opencv完成后,在/usr/local/lib和/usr/local/include目录中分别可以找到opencv的库文件和头文件。
二、Xcode中使用OpenCV
1. 打开Xcode,创建一个“Command Line Tool”项目,Type选择C++,如下图:
2. 添加OpenCV到项目中。
2.1 创建一个Group,命名为"OpenCVLibraries"。
2.2 在OpenCVLibraries上右击,选择Add Files to "HelloOpenCV"...
2.3 当文件选择对话框弹出,按住"Command"+"Shift"+"G",输入/usr/local/lib,回车。
2.4 选择需要的OpenCV库文件(以libopencv_*.dylib格式命名的),或者全选,然后点击“Add”按钮。
3. 选中项目文件,在xcode中间区域会出现“Build Settings”,选中“All”,显示所有的编译设置。
4. 向下滚动找到“Header Search Paths”,或者直接在右上角的搜索框里输入“Header Search Paths”搜索,双击它的值,移除已经存在的条目,添加"/usr/local/include"。
5. 搜索“Library Search Paths”,将原来的值替换为"/usr/local/lib"。
6. 搜索“C++ Standard Library”,选择“libstdc++ (GNU C++ Standard Library)”
配置完成了,下面测试一下程序吧。
7. 将基于VS2013搭建OpenCV开发环境中的程序拷贝过来,稍微修改一下图片的路径:
// // main.cpp // HelloOpenCV // // Created by mingceng on 14-4-2. // Copyright (c) 2014年 Bob. All rights reserved. // #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace std; using namespace cv; int main(int argc, const char * argv[]) { Mat img = imread("/Users/mingceng/Pictures/girl.jpg"); if (img.empty()) { cout << "打开图像失败!" << endl; return -1; } namedWindow("image", CV_WINDOW_AUTOSIZE); imshow("image", img); waitKey(); return 0; }
按Command+B 编译,出现错误:
Undefined symbols for architecture x86_64: "cv::namedWindow(std::string const&, int)", referenced from: _main in main.o "cv::imread(std::string const&, int)", referenced from: _main in main.o "cv::imshow(std::string const&, cv::_InputArray const&)", referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
这是由于C++库和OpenCV编译库不一致造成的,解决办法是把第6步:C++ Standard Library修改为libstdc++ (GNU C++ Standard Library)的操作撤销,即选择“libc++(LLVM C++ standard library with c++11 support)”。
再次编译,通过,按Command+R运行,送个福利,结果如下图:
太感谢了,折腾了好长时间~非常详细,真实~好赞~
O(∩_∩)O~
您好!非常感谢您的分享!不过我还有几个问题想问您。
1.您说的编译选项是在安装一开始就要输入的吗?比如brew install opencv–with-java 还说后面再选?
2.如果在上面一个问题中,我仅仅输入了brew install opencv 那默认的编译语言是什么?
3.如果我输入了brew install opencv–with-java是添加了java的编译选项还是覆盖了原来的编译选项?
十分感谢!
您好,请问imread那里可以把/user/1.jpg改成相对路径,“1.jpg”吗?