OpenCV C++环境搭建笔记(Mac M4)

1,906 阅读3分钟

机器:MacBook Pro M4 Max

工具:Homebrew 4.4.13、cmake 3.31.3、CLion 2024.3.1.1

本文主要介绍两种方式的OpenCV C++的环境搭建,Homebrew、cmake、CLion的安装可以自行查阅网上教程,国内的限制主要是网络因素,使用科学上网方式提高效率。

1. 第一种方式,使用Homebrew。

命令行工具中输入brew info opencv即可。

这种方式比较简单,注意在apple M处理器的机器上安装路径默认在/opt/homebrew/Cellar/opencv/下(访达中使用command+shift+G搜索)。

缺点是耗时,技巧:科学上网+选择用网人少的时候(晚上),掌握技巧的话一个小时就完成安装。检查是否成功安装的命令brew info opencv

image.png

这里要注意apple M处理器和apple Intel处理器的机器安装opencv时,opencv安装路径有所不同,不过对于只使用opencv的api进行开发使用没有影响(个人观点)。

apple M处理器的opencv安装路径 image.png

apple Intel处理器的opencv安装路径 image.png

2. 第二种方式是直接下载opencv官网的源码,使用cmake编译。

准备源码opencv和opencv_contrib 下载地址github.com/opencv

本文选择4.9.0版本的源码下载

opencv:github.com/opencv/open…

opencv_contrib:github.com/opencv/open…

下载后解压。

image.png

打开命令行执行工具进入源码文件夹opencv-4.9.0,新建文件夹build,再进入build

cd opencv-4.9.0
mkdir build
cd build

image.png

接下来就是进行Cmake编译了。

cmake -D CMAKE_SYSTEM_PROCESSOR=arm64 -D CMAKE_OSX_ARCHITECTURES=arm64 -D WITH_OPENJPEG=OFF -D WITH_IPP=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=XXXXXXXX/opencv-src -D OPENCV_EXTRA_MODULES_PATH=XXXXXXXX/opencv-src/opencv_contrib-4.9.0/modules -D PYTHON3_EXECUTABLE=/opt/homebrew/bin/python3 -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_EXAMPLES=ON -D BUILD_ZLIB=OFF ..

其中CMAKE_SYSTEM_PROCESSOR=arm64CMAKE_OSX_ARCHITECTURES=arm64表示M处理的arm64架构;

CMAKE_INSTALL_PREFIX的路径是编译好的OpenCV安装路径,可以自定义,本文指定到了下载源码所在的文件夹opencv-src

OPENCV_EXTRA_MODULES_PATH表示opencv_contrib源码目录的modules文件夹;

PYTHON3_EXECUTABLE这个表示你的python3安装路径,同时开启BUILD_opencv_python3=ON。

Cmake编译结果截图

image.png

完成CMake编译后,再进行make编译了,只需要输入一下指令make -j16即可,-j16表示用16个核心进行编译,可以根据电脑配置自行定义,数值越大编译越快。我直接拉满16核,第一次听到电脑风扇转动,666

image.png

make编译完成后执行,输入一下安装指令make install。大功告成。

image.png

在下面的demo中要使用到路径/XXXXXXXXXXX/opencv-src/lib/cmake/opencv4

使用Clion新建C++工程

image.png

新建好项目DemoOpenCV工程,会自动生成两个文件CMakeLists.txtmain.cpp,只是简单实践一下上面编译好的opencv源码是否正确,所以这里使用Clion新建工程和运行都比较方便。

image.png

配置好CMakeLists.txt,其中OpenCV_DIR的路径就是上面编译得到的/XXXXXXXXXXX/opencv-src/lib/cmake/opencv4。配置后要Sync一下!!!

image.png

main.cpp中代码简单的读取图片、会读处理、显示图片,使用一张opencv的经典图片lena.jpg

#include <iostream>
#include "opencv2/opencv.hpp"
using namespace cv;
int main() {
    std::cout << "Hello and welcome to OpenCV C++!\n";
    Mat image = imread("../lena.jpg");
    if (!image.empty())
    {
        std::cout << "image is OK!" << std::endl;
    }else{
        std::cout << "image is empty!" << std::endl;
        return 0;
    }
    std::cout << "图像的宽度是:" << image.rows << std::endl;
    std::cout << "图像的高度是:" <<image.cols << std::endl;
    std::cout << "图像的通道数是:" << image.channels() << std::endl;
    Mat image1;
    cvtColor(image,image1,COLOR_RGB2GRAY);
    imshow("image",image);
    imshow("image1",image1);
    waitKey(0);
    std::cout<<"hello opencv end"<<std::endl;
    return 0;
}

run一下结果如下

image.png

image.png

程序正常运行,说明本文编译opencv源码正确!下面就可以使用OpenCV提供的API干活了。