首先,笔者是刚大四在一家做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”放网上搜了一下,发现了这个帖子
于是尝试把info.plist中的Required device capabilities 从arm7改为arm6
编译,还是原来的问题,这时候,感觉自己找问题的思路不太对,不该直接把问题代码发到网上搜,先自己过一过脑子,于是分析了一下一下的错误,
又尝试换一下IOS模拟器,i386是iPhone4s的模拟器,换iPhone6的Simulator试了一下,错误只是变成了
那这应该就是库的问题了,少UIResponder,NSManagedObjectModel等等,感觉应该都是系统库(毕竟有NS嘛,乔帮主当年就是靠NextStep重新起家的),但这里笔者不知道该导入什么,于是继续爬帖
发现了官方配置文档,无视掉前面的编译部分,直奔主题,
这看完这篇官方文档,发觉自己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://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
Funny "__OBJC_CLASS_$_"during compile/linking…(问题解决了,当然Fun!)
http://faizhasim.com/funny-__objc_class__-during-compilelinking/