Mac下安装并使用OpenCV

作者: 胡乱的瞎扯 | 来源:发表于2019-02-02 18:25 被阅读1次

摘要:本文实现了用homebrew安装OpenCV,然后在terminal中用cmake编译一个简单的程序

不是用homebrew安装的也可以看,我试图写了一些关键要素,应该可以依葫芦画瓢的自己编译成功

环境

macOS:10.14.1
OpenCV:4.0.1
cmake:3.12.2

安装OpenCV

在终端中输入
brew install opencv

安装完成之后的目录应该是/usr/local/Cellar/opencv

目录结构大致如下:


也是下面提到的cmake文件所在目录

cpp和cmake文件编写

我从官网上复制粘贴了一个最基础的程序,实现了打开指定位置图片并按q退出的功能

注意不同版本的OpenCV有挺大的不同,比如OpenCV2和后面几个版本的库名称有很大区别,所以在include的时候要注意

如果你发现最后找不到include的库,很有可能是OpenCV的版本问题,建议去官网找对应版本的例子

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
    String imageName( "/Users/air/Desktop/WechatIMG15.jpeg" ); // 改成你想要的图片
    if( argc > 1)
    {
        imageName = argv[1];
    }
    Mat image;
    image = imread( imageName, IMREAD_COLOR ); // Read the file
    if( image.empty() )                      // Check for invalid input
    {
        cout <<  "Could not open or find the image" << std::endl ;
        return -1;
    }
    namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
    imshow( "Display window", image );                // Show our image inside it.
    waitKey(0); // Wait for a keystroke in the window
    return 0;
}

为了实现这个程序,我们用cmake来进行编译
首先就是要在同级目录下写一个CMakeLists.txt的文件,内容如下

project( s )
set(OpenCV_DIR "/usr/local/Cellar/opencv/4.0.1/lib/cmake/opencv4")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
find_package( OpenCV REQUIRED )
add_executable( s s.cpp )
target_link_libraries( s ${OpenCV_LIBS} )

注释:

  • s是我随便写的23333
  • 第一行project不是强制性的,最好加上
  • 第二行set很重要,因为在opencv编译好后,所在目录中一般会有一个叫OpenCVConfig.cmake的文件,这个文件中指定了CMake要去哪里找OpenCV,其.h文件在哪里等。只要让CMake找到这个文件,这个文件就指定了Opencv的所有路径,因此设置OpenCV_DIR是为了包含OpenCVConfig.cmake的目录,因为我是用homebrew安装的,所以在我这里,目录就是/usr/local/Cellar/opencv/4.0.1/lib/cmake/opencv4
  • 所以!!如果你不是用homebrew安装的,只需要找到这个文件所在目录替换即可
  • set(OpenCV_DIR...)必须在find_package之前,因为本来的默认路径很可能不是你想要的那个
  • 第三行的set也很重要,因为该opencv版本需要c++11。如果是opencv2那就不需要这行了

在终端中实现

  1. 进入存放上面两个文件的目录
    cd Desktop
  2. 编译
    cmake .
    make
  3. 你会发现在同级目录中出现了很多文件,为了好看,你可以在第二步前创建文件夹用来囊括所有过程文件
    mkdir build
    cd build
    cmake .. 注意这里是两个点,为了返回上层目录
    make

如果没有报错,就可以产生一个可执行文件了

相关文章

网友评论

    本文标题:Mac下安装并使用OpenCV

    本文链接:https://www.haomeiwen.com/subject/jszssqtx.html