网上找了很多教程,照着做都失败了,整整弄了两天两夜,终于好了。网上根本没有人遇到我的坑么?都搜不到,国外也没搜到,呜呜~
版本说明:
1、(必备)MacBook系统:macOS Catalina(版本10.15)
2、(必备)Xcode版本:11.1
3、(可选,我自己是用它安装了qt5等等)homebrew版本:2.1.15(截止19年10月24日最新版本,没安装的墙裂推荐!以后安其他的组件软件啥的都很方便)(ps:它安装的包都在/usr/local/Cellar下面,网上很多人讲的在/usr/local下面不够准确,导致我遇到了下文中的两个坑)
4、(可选)opencv的压缩包,到官网或者GitHub上下载。
App Store里搜索安装
找到官网,复制官网给的一行命令( 下图箭头所指),到本机的terminal里运行。超级简单方便。homebrew官网链接
将下面的命令复制到本机terminal(终端)里:
brew install cmake
记住这个命令格式,下面安装opencv也可以使用homebrew的brew install
这命令。日后安装其他的组建可以用它安装。
(法一)同上的方法,输入下面命令:
brew install opencv
如何安装失败,试试brew install opencv3
,
(法二)前提是安装了git,我们到github上克隆opencv的库。
/*******************已有git的请忽略此步骤!###############
要是没有git,不怕,我们刚刚已经拥有了强大的homebrew,用它来装,还记得安装命令么?
bash brew install git
*******************************************************************/
1、克隆opencv的库文件
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout master
cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout master
cd ..
2、在克隆到本地的opencv库文件夹里新建一个build文件夹,一会儿用来存放cmake的一些列文件。然后进入build文件夹位置里面。(cmake不清楚的话,可以自行查一下Linux相关的知识。这个内容比较多,挖个坑,以后有机会写一下填坑记录)
cd opencv
mkdir build
cd build
3、用cmake编译链接opencv库文件
cmake -G "Unix Makefiles" ..
make
4、如果成功编译链接opencv文件,生成可执行文件,且没有报错的话,用make install命令安装opencv:
make install
默认安装路径:
(ps:mac里面查看隐藏文件的快捷键是shift+command+,+.
这四个键的组合。usr
这个文件夹是隐藏文件。后面的步骤需要查看usr文件夹下面的内容)
现在给自己鼓鼓掌吧!我们已经成功安装了opencv!!
1、打开Xcode,新建一个工程如下图:
注意确定选择了红色箭头指向的选项!
2、在Xcode里面设置引入opencv的头文件:
(1)双击我们的工程项目,箭头1的位置双击出现上图右面的设置界面。
(2)确定箭头2的地方是targets里的文件。
(3)点击箭头3的build settings。
(4)在箭头4的地方输入search回车,同时确认选择了左边红色方框里的all、combined选项。
(5)找到header search paths项,双击它右边的内容栏,点击箭头5指的“+”,添加我们opencv头文件的地址:/usr/local/include
第一坑
网上所有的教程都是这样讲的!但是我遇到了坑!
(1)坑的样子:
#include这句始终提示:无法找到opencv.hpp文件。
(2)解决方法:
点击箭头5指的“+”,添加地址/usr/local/include/opencv4
(3)原因:
我的/usr/local/include文件夹里面有一个opencv4的替身文件,它的原身是/usr/local/Cellar/opencv/4.1.2/include/opencv4/opencv2这个文件夹。
这个opencv2里面才是存放着我们需要的头文件。所以,我们需要把她的地址添加到header search path里面,告诉Xcode编译链接我们的代码时要到opencv2文件夹下面找opencv.hpp这个头文件。
记住这个opencv2!下一个坑还是在她这里!这个opencv2小姐姐啊,真的是,,,爱了!爱了!T-T
3、添加lib文件(有的说是DLL文件)到我们的工程里面。
(1)右击我们的工程项目,(就第2步里箭头1的位置)
(2)选择add files to "…(上图箭头指的位置,tryagain是我随便起的名字,你的可能不一样)跳转到下图界面:(开始时没有箭头2的那个输入地址的弹框)
(3)确认箭头1的选项
(4)在键盘上按一下/
这个键,(同问号一个键)弹出箭头2指向的弹框。在里面输入我们安装在Cellar文件夹里面的opencv的地址,点击go出现下图:
(5)usr->local->Cellar->opencv->4.1.2->lib
选中lib这个文件夹,点击右下角的add(或者双击lib文件夹,同样效果)。(ps:有的教程说选lib里面的哪些哪些文件,要用哪些文件就只添加这些文件。。。。我一个刚开始的菜鸟,我哪知道那些文件在什么时候要用啊?所以我全部添加了,这样项目会臃肿,但是不会因为少文件报错啊。)
第二坑
就在这里我又遇到了第二个坑!
(1)坑的样子: 无法找到opencv的库文件
(2)解决方法:
把工程添加的/usr/local/lib
文件夹改成/usr/local/Cellar/opencv/4.1.2/lib
文件夹。
(3)原因:
网上的各种教程都没有详细说添加的是哪个lib文件夹里的dylib文件,我就找了/usr/local/
下面的lib文件里的dylib文件。后来发现homebrew安装的东西都放在/usr/local/Cellar
这个文件夹下面,自己摸索着改成Cellar/opencv下面的,测试成功,0个error问题就出在这里!
此时,我们的工程目录里面会多了一个lib文件夹,同时也自动在build phases的link binary with libraries中添加了这个文件夹里面的文件。如下图:
好了,配置opencv就全部完成了!撒花!!
如上图修改main.cpp文件。第32行的图片地址别忘了改成自己的图片地址。代码我随便在网上找的,也贴下面吧,当然你也可以自己写或者找别的代码测试。
#include
using namespace std;
#include
using namespace cv;
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!\n";
string path = "/Users/huqingxin/Desktop/1.jpg";
Mat image = imread(path);
namedWindow("WGG");
imshow("WGG", image);
Mat gray;
cvtColor(image, gray, COLOR_RGBA2GRAY);
namedWindow("gray");
imshow("gray", gray);
waitKey(0);
return 0;
}
测试代码参考地址:https://blog.csdn.net/OTime77/article/details/89441700