iOS与c++ 混编 ,联调opencv & dlib遇到的坑~~

本文主要从零开始讲解,如何为基于opencv、dlib的算法,构建人脸识别系统。



Dlib安装

1.dlib安装需要的依赖有 openblas, opencv,都可以通过brew安装

$brew install openblas

$brew install opencv


2.然后安装X11  https://www.xquartz.org/  ,X11是啥,请自行百度吧~  就这么任性。

$ cd /usr/local/opt

$ ln -s /opt/X11 X11

然后重新启动Mac

3.如果没有安装过cmake的话,先配置一下Cmake,有的人用homebrew,反正我是直接网上下载的。地址是: https://cmake.org/download/

安装后,选择open打开,启动程序后,从菜单栏选择Tools ->How to Install For Command Line Use.


然后会弹出对话框,告诉你如何配置才能使终端也可以使用cmake命令,这是为下面编译dlib库做准备工作。


如果你在终端输入 cmake --version,系统并不认识,

那么你就要输入PATH="/Applications/CMake.app/Contents/bin":"$PATH"

当你关闭命令行窗口后,再重新开启一个命令行窗口,系统仍然表示无法识别cmake命令。所以我们来尝试第二种方法

sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install

此时,再次打开新的命令行窗口,cmake也可以正常运行了!


如果一上来就安装过cmake ,直接跳到第4步。

4.下载安装dlib

打开终端

git clone https://github.com/davisking/dlib.git

当下载下来dlib文件的时候,如果有一些更改dlib文件夹里面的库内容,在此时修改,比如,我们就用到了某一个类中的一个私有变量,我们改为了public的情况,导致编译了好多次都有问题的弯路。

cd 到你下载下来的dlib-master 文件夹下面


然后继续执行:

mkdir build

cd build

cmake ..

cmake --build . --config Release 这一步会等很久


然后 会看到 dlib-master目录下回多一个build目录


进入build后 里面还会有一个dlib目录 最终会进入到我们所编译的文件


打开dlib.xcodeproj


注意Architectures 到 Valid Architecture 的配置

还有 


注意iOS Deployment Target !!!!当然是看自己项目了,反正默认是最新,为了防止少走弯路!!

还有 scheme尽量选择Release

选择模拟器、真机 都编译一遍,然后合并.a文件

cd /.../dlib

lipo -create Release-iphoneos/libdlib.a Release-iphoneSimulator/libdlib.a -output libdlib.a

此时会在dlib下生成一个libdlib.a的静态文件 

可以根据lipo -info 你的.a文件路径 来查看所支持的指令集


到此dlib库是编译完成了。

然后呢 将dlib库 (下载下来的dlib-master 里面的dlib文件夹,整个copy)与刚刚编译成功的libdlib.a 放进到同一个文件夹中


除了这两个外,还有一个.dat的模型,可以根据大家需求,放进来或者不放进来。

ps:训练好的模型是一定要引入的,要不然会引起崩溃的。

但是注意一点啊,加入到项目中的DlibEx,不要把dlib文件中的文件也copy到项目中





此时是最终目录的样式!

5.把 dlib所依赖的库加进去 


5.配置编译器

首先,将DlibEX文件夹目录引入到 buildSettings - > Header Search Paths 


此时 Library Search Paths 也会变化


然后 配置 Preprocessor Macros


如下:

DLIB_NO_GUI_SUPPORT

DLIB_JPEG_SUPPORT

DLIB_USE_LAPACK

DLIB_USE_BLAS

NDEBUG


还是注意:iOS Deployment Target



因为是c++语言与OC混编,所以编译器配置的东西还不少。走过最多的弯路是在 Compile Sources As ,看了网上很多教程 选择了ObjectiveC ++ ,导致编译错误。



Opencv

直接把opencv的库下载下来拖到项目中,或者cocoapods都可以 



在集成opencv的时候 可能会遇到 exposure_compensate.hpp 跟 blenders.hpp 报Prase Issure的错误:

   enum {NO, GAIN, GAIN_BLOCKS};

按照如下修改即可。


参考

opencv 库的坑

https://blog.csdn.net/raynayyue/article/details/40543813 

cmake 创建dlib  - cmake 出错可能原因有CMakeCache 

https://blog.csdn.net/drbinzhao/article/details/76889472

Mac下安装dlib

https://www.jianshu.com/p/3e0b7d1ddc56

创建Dlib库指南

https://www.jianshu.com/p/701e8dea887e

编译iOS 用 dlib库

https://blog.csdn.net/lengshengren/article/details/52383511

如何使用Dlib

https://www.jianshu.com/p/c4b6f51d6768

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

推荐阅读更多精彩内容