首先,笔者是刚大四在一家做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/
一直想做一个属于自己的分页,1:我试过用datapage,虽然是很好用,但是必须要配合datalist才能使用,感觉不太好2:自己写分页控件,目前正在摸索中,关键是怎么分页的问题,有的是用datatable传进去分页,感觉效率有点低3:就是今天我使用的方法,存储过程+Div+css分页了说明:本人是毕业半年的菜鸟,以下程序全是按照自己的想法来写的,原创勿喷,并请大神们给出指导,谢谢...
今天在开发中遇到 炎黄平台点击【办理】按钮后,layer.confirm弹出来后,没有让用户点击确定或取消按钮,confirm弹框就自动消失的问题。究其原因,是因为layer.confirm是异步UI,编译器自动先执行其后的代码去了。下面代码可以将异步改成同步UIlayer.confirm('是否执行下一步?', { btn: ['是', '否'], ...
在Spring+Spring MVC+Mybatis中,也就是SSM框架中,我们得自定义拦截器是在springmvc-servlet.xml中配置拦截器,而SpringBoot是舍去了许多配置文件,以代码代替配置文件,在配置的时候我们需要用到@Configuration这个注解,这个注解是将这个类注册成为一个Beans,虽然说springboot得大部分配置都可以通过properties或者yml...
using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic;public class VerticalText : Text { public enum LetterType { chinese,
第一块铁。是在情理之中的,毕竟面对的都是区域赛银牌及以上的队伍,我们的实力本身就比不上。但依旧有点难受,尤其是自己演了一整场。去了北京,发现和以前来玩的时候记忆中的样子不太一样,路上连个灯都没有,也不知道是不是因为修路啥的。但当时就有“这居然是北京”这样的感慨,物价在那里也是真的贵,有些吃不消。不得不感叹CCPCFinal的规格看起来挺高的看到了许多熟悉的队名和人名。热身赛的时候就出现了一堆问题。正式赛的时候,我开场就觉得L是签到题,结果签了5h都没签出来。自己想到过用随机的方法去做,结果自己把自己否
身处这样一个互联网时代,应当感恩技术带来的便利,从在一个地方不远游就只能是井底之蛙,到今天互联网让我们不出门知天下事,当然,假消息也有。虽然现在许多事和技能仍然需要项目实践,但是不得不说,知识已经不再是一种稀缺的资源,需要时间训练的技能才是。我们应该充分利用好这个时代提供给我们的便利,努力学习和思考。虽然川普四处设限,但是地球村依然变得越来越“小”,就拿我们生命科学领域来说,ncbi数据库,让...
##### hostapd configuration file ############################################### Empty lines and lines starting with # are ignored# AP netdevice name (without 'ap' postfix, i.e., wlan0 uses wl
一、 ROT13简介:ROT13(回转13位)是一种简易的替换式密码算法。它是一种在英文网络论坛用作隐藏八卦、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。ROT13 也是过去在古罗马开发的凯撒密码的一种变体。ROT13是它自身的逆反,即:要还原成原文只要使用同一算法即可得,故同样的操作可用于加密与解密。该算法并没有提供真正密码学上的保全,故它不应该被用于需要保全的用途上。...
怎么在打开查看的CAD图纸上插入OLE对象?在工作中经常需要进行的操作就是在对图纸进行编辑或是其他的操作,在图纸上面进行插入一个OLE对象就是一种,具体应该怎么样进行操作,下面小编就要来教大家的就是怎么在打开查看的CAD图纸上插入一个OLE对象的全部操作步骤,希望能够帮助到你们,就以迅捷CAD编辑器为例来教大家相关操作,希望能够帮助到你们,望采纳!步骤一:打开浏览器,在浏览器中搜索迅捷CAD编辑...
转自:http://blog.csdn.net/skc361/article/details/16332083问题:在测试卸载时,手动的删除了安装目录下的所有文件。然后重新安装时就提示错误了“错误:-1605 此操作只对当前安装产品有效”。解决:InstallShield Installation Information 文件夹里放的是用 Install
我有一个list的list,名为ListOfValues。我想根据这张单子的大小画一块木板,把一些方块涂成黑色,用白色填充,其他的用黑色填充。我试着得到了以下结果:我的密码是:import turtle#sets screen characteristicswn=turtle.Screen()wn.bgcolor('lightblue')wn.title('Chessboard')#sets tu...
个头虽然只有巴掌大小,但是却能输出1800万像素球状全景照片、拍摄视频分辨率和帧率达到5.2K 30fps、360°无死角录音、自带GPS且与Gopro兼容……这样的全景相机要不要太给力?这款身材小巧却有宏大视野的产品,就是GoPro最新推出的全景相机Fusion。2018年4月9日,在新浪VR、微博摄影、GoPro的携手举办下,首届针对C端摄影发烧友的大型线下全景嘉年华在北京拉开了帷幕。据GoP