「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 <iostream>
#include <opencv2/opencv.hpp>
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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351