「OpenCV」:mac上安装编译opencv4.3.0及opencv-contrib-4.3.0

一、环境准备

1.使用HomeBrew安装cmake
brew install cmake
2.获取OpenCV源代码

可以到官方下载页下载稳定版本
PS:我这里下载的是最新版本 4.3.0 ,刚开始也就纠结该用哪个版本,但既然是从头开始学,那就直接上手最新的版本,不然和咸鱼有什么分别~手动捂脸!

从git仓库克隆

git clone https://github.com/opencv/opencv.git git clone 
https://github.com/opencv/opencv_contrib.git
3. 构建OpenCV

3.1 在源码目录中创建一个临时目录,这里会存放一下cmake编译生成的文件

cd~ / opencv mkdir build

3.2 配置

cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

如果需要同时配置编译 opencv-contrib-4.3.0的话(opencv和opencv-contrib的版本要一致),就用这个

cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/Users/ing/opencv_contrib-4.3.0/modules ..

------------------------------指令解释------------------------------

在安装opencv的时候,会用:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

这句话什么意思呢?

在build文件中输入:
cmake -D CMAKE_BUILD_TYPE=RELEASE
这样产生的makefile文件make生成的可执行文件就带有调试信息,供gdb和gdbserver使用了。
CMAKE_BUILD_TYPE的值可以为Release或者Debug。
CMAKE_INSTALL_PREFIX=/usr/local ..
INSTALL 指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及文件、目录、脚本等。 这里就是提前设置好编译到的路径!


3.3 构建安装

make -j16#并行运行16个线程
sudo make install

PS
在编译过程中有一个报错:

[ 66%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/pct_signatures_sqfd.cpp.o
[ 67%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/sift.cpp.o
/Users/ing/opencv_contrib-4.3.0/modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: 'boostdesc_bgm.i' file not found
          #include "boostdesc_bgm.i"
                   ^~~~~~~~~~~~~~~~~
[ 70%] Built target opencv_test_imgproc
[ 70%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/stardetector.cpp.o

搜索了下结果是缺少必要的文件:

boostdesc_bgm.i 
boostdesc_bgm_bi.i 
boostdesc_bgm_hd.i 
boostdesc_lbgm.i 
boostdesc_binboost_064.i 
boostdesc_binboost_128.i 
boostdesc_binboost_256.i 
vgg_generated_120.i 
vgg_generated_64.i 
vgg_generated_80.i 
vgg_generated_48.i

下载
以上文件,拷贝到opencv_contrib/modules/xfeatures2d/src/ 路径下即可
然后执行

make clean 
make -j16

mmp,又又报错了:

fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或
目录

头文件include地址不对,解决方法如下:
将opencv-4.3.0/modules/features2d/test/文件下的

test_descriptors_regression.impl.hpp 
test_detectors_regression.impl.hpp 
test/test_detectors_invariance.impl.hpp 
test_descriptors_invariance.impl.hpp 
test_invariance_utils.hpp

拷贝到

opencv_contrib-4.3.0/modules/xfeatures2d/test/文件下。

同时,将opencv_contrib-4.3.0/modules/xfeatures2d/test/test_features2d.cpp文件下的

#include "features2d/test/test_detectors_regression.impl.hpp" 
#include "features2d/test/test_descriptors_regression.impl.hpp"

改成

#include "test_detectors_regression.impl.hpp" 
#include "test_descriptors_regression.impl.hpp"

将opencv_contrib-4.3.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp文件下的

#include "features2d/test/test_detectors_invariance.impl.hpp"
#include "features2d/test/test_descriptors_invariance.impl.hpp"

改成

#include "test_detectors_invariance.impl.hpp" 
#include "test_descriptors_invariance.impl.hpp"

再次执行

make clean 
make -j16

没有报错
至此OpenCV在MAC上算安装完毕了。

二、测试

安装好 OpenCV 后,在 /usr/local/lib 下能看到这样的文件这说明已经安装成功了

usr.local.lib.png

接下来是运行,使用的ide是Clion, 废了很大劲儿才找到的破解版,在线破解,必须联网才能用,凑合着用吧, 谁让咱穷。

新建一个项目:

newproject.png

然后一路next,创建成功后,配置cmakelist.txt文件:

cmake_minimum_required(VERSION 3.15)
project(HelloOpencv)

set(CMAKE_CXX_STANDARD 14)

#find_library(OpenCv)
find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(HelloOpencv main.cpp)
target_link_libraries(HelloOpencv ${OpenCV_LIBS})

PS:至于cmakelist的语法,还是建议学一学的,我也在学ing, 可参考https://www.hahack.com/codes/cmake/
或者
http://c.biancheng.net/view/7097.html
这里不过多赘述。

配置完成后,在main.cpp里输入以下内容,实现显示一张照片及显示灰度化后的:

#include 
#include 
using namespace std;
using namespace cv;
int main() {
    Mat srcImage = imread("/Users/ing/Downloads/ing.png");

    if(!srcImage.data){
        cout<<"Image not loaded";
        return -1;
    }
    namedWindow("origin",WINDOW_AUTOSIZE);
    imshow("[origin]",srcImage);

    Mat gray;
    cvtColor(srcImage,gray,COLOR_RGBA2GRAY);
    namedWindow("gray");
    imshow("[gray]",gray);

    waitKey(0);
    return 0;
}

运行效果如下:

image.png

你可能感兴趣的:(「OpenCV」:mac上安装编译opencv4.3.0及opencv-contrib-4.3.0)