美文网首页
iOS开发 - OpenCV + OpenCV_contrib

iOS开发 - OpenCV + OpenCV_contrib

作者: Seacen_Liu | 来源:发表于2018-11-09 15:22 被阅读0次

日常iOS开发中,我们基本都可以使用Cocoapod直接进行依赖管理。现在项目中使用到了OpenCV,我也像往常一样在podfile中添加了pod 'OpenCV'。感觉这样就行了,但是在项目中还用到了OpenCV一个额外的模块——OpenCV_contrib,就有了下面的折腾历程了。

在Cocoapod中寻找

Cocoapod.png

Cocoapod中我找到了上述的两个库,但是再pod install中都出现了问题,添加不上去,如果有人使用过这两个可以在评论区说一下。

手动下载和依赖全过程

由于我用Cocoapod的方法没有成功,所以尝试着自己打包,再导入到项目中

  • 下载OpenCV源代码,在里面你可以选择自己需要的版本

  • 下载Opencv_contrib源代码,注意下载的版本应该和你需要的OpenCV一样

  • 下载Cmake,后面打包framework我们需要这个软件

  • 打开Cmake,根据下图的指示配置

    Cmake.png
  • Opencv_contrib源代码目录中的modules文件夹中的东西全部复制到Opencv源代码目录中的modules

  • 打开终端执行 (路径名需要自己照看一下,主要是找到ios/build_framework.py的路径)

    • cd ~/<my_working_directory>
    • python opencv/platforms/ios/build_framework.py ios
  • 等待打包...(挺久的)

  • 打包完成后就会在你执行build_framework.py的目录先找到ios文件,你要的opencv2.framework就躺在里面了

  • 随后便可通过下面两种方法opencv2.framework

    • 在项目中的 Target -> General -> Linked Frameworks and libraries 添加opencv2.framework
    • 可以直接拖进项目,不过记得选中copy items if needed

其他依赖

根据上面的方法将opencv2.framework导入到项目中是还不能用的,command B走起来会发现Error了

常见错误:

linker command failed with exit code 1 (use -v to see invocation)

如果出现这个恶心的问题,我们需要右键点击Reveal in log,耐心的去看那一大堆信息。
当时我出现下图的报错

log.png
通过AVCaptureSessionPresetMediumCvVideoCamera初步猜测出我还需要引入AVFoundation.frameworkCoreMedia.framework。如下图所示:
resolve.png

然后再command BBuild Succeeded

注意事项

在我们使用OpenCV的时候要注意CPP的头文件需要先引入,为了方便起见,我们可以在PrefixHeader.pch中使用下面的形式

#ifndef PrefixHeader_pch
#define PrefixHeader_pch

#ifdef __cplusplus

#import <opencv2/opencv.hpp>
#import "opencv2/face.hpp"

#endif


#ifdef __OBJC__

// ...

#endif

#endif /* PrefixHeader_pch */

结语

本文是笔者的踩坑和当前解决方案,如果大家有更好的方法,欢迎留言~

相关文章

网友评论

      本文标题:iOS开发 - OpenCV + OpenCV_contrib

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