关于最新的OPENCV3.0 for IOS8.1在XCode 6.1中的配置


首先,笔者是刚大四在一家做OCR的公司里实习的小白一枚,日前公司需要给客户开发一款IOS的OCR软件,自然少不了前处理,于是笔者爬遍了帖山书海,发现OPENCV是一款不错的开源框架,便拿来做前处理用,但配置过程对于一个我这样的小白来说还是有不小的难度,废话不多说,把自己的一点实践经历给大家分享一下,帮其他小白们少走点弯路,还希望大神能多多给出指点意见哈^_^~

笔者在配置OPENCV过程中所用的OpenCV是在http://www.opencv.org/ 上下载的,最新版本为3.0Alpha,下载OpenCV formac(有时候下载不下来,建议大家自备翻墙神器fg742)。

下载完成后解压,创建一个IOS的singleViewProject,编程语言笔者用的Objective-C。接下来就是导入opencv2.framework,附上截图


由于在XCode6.1中已经默认取消掉了Prefix文件,所以笔者就在ViewController.h中的import<UIKit/UIKit.h>之前直接添加了以下代码

#ifndef __IPHONE_8_1

#warning "This project uses features only availablein iOS SDK 4.0 and later."

#endif

#ifdef __cplusplus

   #import<OpenCV/opencv2/opencv.hpp>

#endif

#ifdef __OBJC__

   #import<UIKit/UIKit.h>

   #import<Foundation/Foundation.h>

#endif

这时候编译肯定会报错,笔者这里遇到的错误是'list' file not found”

于是笔者上网爬各种帖子,终于找到了解决方案

http://blog.chinaunix.net/uid-11121450-id-4026507.html

按照帖子的方法,把用到opencv的类的后缀从.m改为.mm,导入libc++.dylib

再编译原本一个错误,这下子蹦出来10个错误附上截图,


我晕…

继续爬帖,看到王彪大哥写了一份

http://blog.sina.com.cn/s/blog_698415f20100y7ip.html

Framework

Required

Optional (required for video capture)

AVFoundation.framework

 

ImageIO.framework

 

libz.dylib

 

CoreVideo.framework

 

CoreMedia.framework

 

便把 AVFoundation.framework,ImageIO.framework,libz.dylib添加了进去,再编译,仍然报错…而且还是那10个错误


从网上把这错误的“Undefined symbols forarchitecture i386”放网上搜了一下,发现了这个帖子

http://www.cocoachina.com/ask/questions/show/108648/%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20?tab=oldest

于是尝试把info.plist中的Required device capabilities 从arm7改为arm6












编译,还是原来的问题,这时候,感觉自己找问题的思路不太对,不该直接把问题代码发到网上搜,先自己过一过脑子,于是分析了一下一下的错误,





















又尝试换一下IOS模拟器,i386是iPhone4s的模拟器,换iPhone6的Simulator试了一下,错误只是变成了




那这应该就是库的问题了,少UIResponder,NSManagedObjectModel等等,感觉应该都是系统库(毕竟有NS嘛,乔帮主当年就是靠NextStep重新起家的),但这里笔者不知道该导入什么,于是继续爬帖

发现了官方配置文档,无视掉前面的编译部分,直奔主题,

www.docs.opencv.org/doc/tutorials/ios/video_processing/video_processing.html#opencviosvideoprocessing

这看完这篇官方文档,发觉自己UIKit.framework 和Foundation.framework还没导入…猛然发现自己好粗心,赶紧导入。再编译一下,哈哈,少了5个!


终于有了进展,再研究研究错误吧,发现有个_NSSQLLiteStoreType有问题,一有NSSQLLite,肯定就跟数据库有关啦,把这个问题去Bing上再搜了一下,重要找到一篇帖子:

http://faizhasim.com/funny-__objc_class__-during-compilelinking/

跟我的问题差不多,最终导入一个CoreData.framework,再编译,BuildSucceed!


总结:无论是从学校,还是在公司里工作,都要不断学习,笔者这才刚刚起步,需要积累的还有好多好多。

以下列出笔者在查找问题的过程中查询过的网站和帖子:

王彪大哥的blog:http://blog.sina.com.cn/s/blog_698415f20100y7ip.html

build Opencv2.4.9forIOS:

http://stackoverflow.com/questions/16983696/how-to-build-opencv-2-4-9-for-ios

唐巧的技术博客(也是搞IOS的牛人):

http://www.devtang.com/blog/2012/10/27/use-opencv-in-ios/

遇到32bit和64bit问题时查的资料:

http://www.cocoachina.com/ask/questions/show/108648/%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20?tab=oldest

http://code4app.com/requirement/53b0fe3f933bf04c758b5c79

openCV 2.4.8 iOS 7.0 frameworklinker errors:

http://stackoverflow.com/questions/22153147/opencv-2-4-8-ios-7-0-framework-linker-errors

Opencv简介及一个小demo:

http://www.magora-systems.com/software-based-video-stabilization-on-ios-using-opencv-framework/

Opencv官方给出的一个VideoProcessing Demo

http://www.docs.opencv.org/doc/tutorials/ios/video_processing/video_processing.html#opencviosvideoprocessing

Funny "__OBJC_CLASS_$_"during compile/linking…(问题解决了,当然Fun!)

http://faizhasim.com/funny-__objc_class__-during-compilelinking/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值