为了学习C++版本的opencv,今天我在电脑上安装opencv并且运行一个简单的打开图片并显示的程序。没想到过程相当的痛苦,所以把这个过程记录下来,以便自己以后再次配置可以省很多事。如果还有同学看到这篇文章后少走一些弯路,我就更开心了。
安装openCV
MacOS安装openCV有很多方法,比如通过Homebrew。我选择的方法是直接下载压缩包,然后编译。对于MacOS选择Unix版本的就可以。
以下假设解压缩之后文件夹的位置是,/Users/your_user_name/opencv/opencv-3.4.0
. 我们需要通过cmake
来build opencv。如果已经安装了homebrew,则可以直接通过以下命令来安装cmake
。如果没有安装homebrew,可以在官网按照步骤安装。
安装cmake, brew install cmake
。
安装好cmake后,在/Users/your_user_name/opencv/opencv-3.4.0
新建一个文件夹,假设名字叫build
。
进入文件夹build, cd build
。
利用cmake编译,cmake -G "Unix Makefiles" ..
完成上一步后,make -j8
之后,sudo make install
所有的opencv library,就在/Users/your_user_name/opencv/opencv-3.4.0/build/lib
中了。
设置Xcode
如果没有安装Xcode,可以在app store中搜索,然后安装。在第一个链接中详细介绍了怎么安装Xcode。
进入Xcode,新建一个project,选择Command Line Tool
点击next, 输入项目名称,选择c++语言
设置Xcode,使得编译器能够找到opencv library。
通过OpenCV打开图片,并且显示出来
接下来我们通过opencv打开图片,并且显示。看似很简单,但是也有一个坑。
在刚建立的project中的main.cpp
中,我们的code如下
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/videoio/videoio.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/core/core.hpp>
using namespace std;
using namespace cv;
int main()
{
VideoCapture cap(0);
namedWindow("frame", cv::WINDOW_AUTOSIZE);
while(true)
{
Mat frame;
cap.read(frame);
if(frame.empty())
{
cout << "No frame" << endl;
}
imshow("frame", frame);
}
return 0;
}
写下代码之后,还要注意把相应的opencv library放在project中,这些library就在/Users/your_user_name/opencv/opencv-3.4.0/build/lib
中。右键项目名称,然后选择Add files to
进行添加。
最后还有一个地方需要注意,就是读取图片的路径,一定要写成完整的路径,否则没有办法找到图片。我在这里耽搁了很长时间才解决。
这篇文章综合了很多文章和视频的内容,链接放在下面,在此向前人们表示感谢。