美文网首页
OpenCV的简单使用

OpenCV的简单使用

作者: 蜗牛也有梦想 | 来源:发表于2018-01-31 14:49 被阅读55次

    简介:参考资料

    OpenCV(Open Source Computer Vision Library:openCV官网)是一个开源的基于BSD许可的库,它包括数百种计算机视觉算法。文档OpenCV 2.x API描述的是C++ API,相对还有一个基于C语言的OpenCV 1.x API,后者的描述在文档opencv1.x.pdf中。

    OpenCV具有模块化结构,这就意味着开发包里面包含多个共享库或者静态库。下面是可使用的模块:

    • 核心功能(Core functionality) - 一个紧凑的模块,定义了基本的数据结构,包括密集的多维Mat数组和被其他模块使用的基本功能。
    • 图像处理(Image processing) - 一个图像处理模块,它包括线性和非线性图像滤波,几何图形转化(重置大小,放射和透视变形,通用基本表格重置映射),色彩空间转换,直方图等。
    • 影像分析(video) - 一个影像分析模块,它包括动作判断,背景弱化和目标跟踪算法。
    • 3D校准(calib3d) - 基于多视图的几何算法,平面和立体摄像机校准,对象姿势判断,立体匹配算法,和3D元素的重建。
    • 平面特征(features2d) - 突出的特征判断,特征描述和对特征描述的对比。
    • 对象侦查(objdetect) - 目标和预定义类别实例化的侦查(例如:脸、眼睛、杯子、人、汽车等等)。
    • highgui - 一个容易使用的用户功能界面。
    • 视频输入输出(videoio) - 一个容易使用的视频采集和视频解码器。
    • GPU - 来自不同OpenCV模块的GPU加速算法。
    • … 一些其他的辅助模块,比如FLANN和谷歌的测试封装,Python绑定和其他。

    iOS中的使用

    安装的方式蛮多的,鉴于大部分的项目都集成cocoapods,所以选择用cocoapods集成。其他的方式可以学习OpenCV iOS开发(一)——安装这篇博客。

    podfile内容

    然后终端执行pod install就可以了,需要注意的是.xcodeproj文件要和podfile同目录,不然安装是不成功的。提示下面的错误。

    podfile和.xcodeproj不再同一层目录

    因为电脑没有安装cmake工具,所以又提示了下面的错误。

    没有安装cmake

    参考在Mac下使用OpenCV文章的一、安装OpenCV for MAC发现我电脑没有安装cmake,由于之前安装了Homebrew,所以直接使用命令brew install cmake安装完成如下图。

    成功安装cmake

    于是继续使用pod install 来安装OpenCV-iOS,但是还是报错。内容非常的长,下图是截取其中三个部分组成的。

    安装OpenCV-iOS报错

    观察其中error的内容,猜测可能是Xcode的版本问题,因为OpenCV官网的版本已经是3.4.0了,但是cocoapods上面的版本还是3.1.1。尝试使用Xcode8.3.3来打开项目。

    更改终端编译的xcode版本

    退出当前的Xcode之后打开8.3.3然后按照上图去设置,重新执行pod install。

    openCV安装成功

    提示要我们打开workspec文件,而不是xocdeproj。

    开始编译项目又遇到了报错,还真是坎坷。
    linker command failed with exit code 1 (use -v to see invocation)也看不到详细的信息。百度参考这篇文章,就解决了问题,-all_load加不加都可以,但是要删除掉原来的所有内容。

    编译报错的解决办法

    因为原来的项目是Xcode9.2建立的,所以用8.3.3打开的时候storybord会报错,只需要将Main.storyboard、LaunchScreen.storyboard两个用sourceCode打开,删除关于safeArea的那条key-value内容就可以把项目跑起来了。

    接着继续编译

    c++文件Xcode无法编译

    需要把viewController.m文件的后缀改为.mm,这样就可以了

    更改viewController.mm

    至此openCV的导入和编译工作就全部完成了,剩下的就是使用了。

    参考这篇文章想写一个简单的小Demo,使用一下opencv。但是按照步骤导入头文件,粘贴完代码之后,运行报错如下。

    linker问题

    百度谷歌各种搜索之后,都没有找到答案,有这样说的,其他的答案基本不靠边。
    于是乎就怀疑是不是博主漏了什么东西,谷歌到了基于 OpenCV 的人脸识别这篇文章,讲的不错,关键是有Demo,下载之后发现要用8.3.3的Xcode运行,然后运行了下真的可以。
    继续搜索了下原来的那个Linker问题,还是没有答案,于是采用了最笨的方法,把项目中所有的参数配置都设置和基于 OpenCV 的人脸识别这个Demo中的一样。一项项的检查,下图中的设置是不一样的。

    设置的不同之处

    观察上面的列表中的内容,慢慢的实验哪些需要用到,最终发下,只有一个$(inherited)只设置这一个编译就成功了。关于这个关键字还特意去查了资料,找到 iOS开发之Xcode 相对路径与绝对路径Xcode中常见的环境变量这两篇文章,讲的意思是target中这样设置会继承project中linker的framework。设置完之后,会发现那里变成了很多项,应该是因为缺少其中某些库,所以到导致编译报错。

    linker设置 设置完自动扩展为很多的framework

    然后就发现可以按照第一个Demo中的内容运行,得出了相同的结果。算是实现了这个小Demo。

    相关文章

      网友评论

          本文标题:OpenCV的简单使用

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