在iPhone上使用OpenCV

移动开发 iOS
OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。

iPhone上使用OpenCV是本文要介绍的内容,很久没有写过关于iPhone的Blog了,这两天Prestudy Lua & OpenCV在iPhone上的应用,就当做个笔记吧。因为Lua很简单,大家直接看这个帖子就可以了:
http://www.grzmobile.com/blog/2009/11/13/integrating-lua-into-an-iphone-app.html 没有什么需要特别关注的,很容易就集成成功了。

OpenCV这个有些复杂,大家先仔细看一下下面这个Blog: http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en 但是大家可以按照下面我的步骤进行,因为其中有些地方它写的有些小问题。我先写一下我的开发平台:

硬件:MacBook (2008年买的)这个很重要,因为我的机器装Snow Leopard不能支持64bit,只是32bit的

软件:Snow Leopard 10.6.6

  1. XCode 3.2.5 + SDK4.2 

下面这个软件请大家自行下载:

CMake 2.8.4,我推荐大家到这个网站http://www.cmake.org/cmake/resources/software.html下载,请不要使用sudo port install cmake,因为这样会装2.6.x版本的,可能会影响你的编译。

接下来的步骤大家可以按照我写的一步步进行:

[1] git clone git://github.com/niw/iphone_opencv_test.git,如果网速太慢,可以直接去https://github.com/niw/iphone_opencv_test下载一个***版本的zip包。

[2] 进入iphone_opencv_test目录(就是git或者下载zip包解压的目录)。然后下载OpenCV-2.1.0。然后把下载下来的OpenCV-2.1.0在iphone_opencv_test目录里面解压,命令是:tar jvxf opencv-2.1.0.tar.bz2。

[3] 进入OpenCV-2.1.0目录,运行patch -p1 < ../OpenCV-2.1.0.patch。这个命令其实就是修改OpenCV的Makefile使其支持iPhone。

[4] 下面就是准备编译simulator版本了

  1.   % cd .. # 回到iphone_opencv_test目录  
  2.   % mkdir build_simulator 不要用别的名字,等下好编译例子文件  
  3.   % cd build_simulator  
  4.   % export SDK_VERSION=4.2  
  5.   % export IPHONEOS_VERSION_MIN=3.0  
  6.   %export CMAKE_OSX_ARCHITECTURES=i386 
  7.   % ../opencv_cmake.sh Simulator ../OpenCV-2.1.0  
  8.   % make -j 4  
  9.   % make install 

注意上面三个export命令,前两个很明显。因为我希望我的OpenCV***可以支持iOS3.0,注意第三个export,这个命令是告诉cmake我的simulator的架构是i386(这很明显嘛,我的simulator是跑在MacBook的CPU上面的)。

[5] 下面是编译Device版本了。

  1.   % cd .. # 回到iphone_opencv_test目录  
  2.   % mkdir build_device #不要用别的名字,等下好编译例子文件  
  3.   % cd build_device  
  4.   % export SDK_VERSION=4.2  
  5.   % export IPHONEOS_VERSION_MIN=3.0  
  6.   %export CMAKE_OSX_ARCHITECTURES=armv6 
  7.   % ../opencv_cmake.sh Device ../OpenCV-2.1.0  
  8.   % make -j 4  
  9.   % make install 

[6] 打开iphone_opencv_test的测试project文件,然后在simulator和device上都测试一下。应该可以看到结果的。

[7] 如果我们自己新建一个项目,如何加入已经编译好的opencv库呢?我的做法是:

(a) 新建一个iPhone项目,假设项目目录是:~/opencvtest

(b) 在~/opencvtest目录下面新建下面目录结构:

  1. ~/opencv/lib/OpenCV/Simulator  
  2. ~/opencv/lib/OpenCV/Device 

然后把iphone_opencv_test里面opencv_device/和opencv_simulator的include,lib目录拷贝到对应的Device和Simulator目录下面。

(c) 最关键的来了。大家知道要能编译过,我们需要添加头文件include目录和库的支持。大家也注意到Simulator和Device目录里面的东西是同名的,而且支持的一个是simulator,一个是device。于是我用一个策略。Simulator选择debug,Device选择 Release。然后大家可以在对应的头文件支持和库文件支持。

头文件:Header Search Path: $(SRCROOT)/lib/OpenCV/Simulator/include/opencv/ 和 $(SRCROOT)/lib/OpenCV/Simulator/include/

库文件:-lstdc++

  1. -lz  
  2. $(SRCROOT)/lib/OpenCV/Simulator/lib/libcxcore.a  
  3. $(SRCROOT)/lib/OpenCV/Simulator/lib/libcv.a 

大家对应填Simulator 和 Device。

(d) 如果你需要编译simulator版本,请加上Accerlator.Framework的支持。这个Framework就是加速你的向量计算的。不过因为iOS 3.0没有这个Framework,所以如果你要在iOS 3.x的真机上实验的话,请删除这个库。

OpenCV For iPhone的一些问题

速度。这个有一些朋友提到过,还是比较慢的。原因有一下几个:

(1) OpenCV没有为arm体系结构做过优化;

(2) iPhone特别是老版本的iPhone,CPU还是没有强劲到这等地步的。

小结:关于在iPhone上使用OpenCV的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2021-08-19 18:28:22

FedoraLinuxOpenCV

2012-04-26 13:30:05

iPhoneApp Store发布程序

2011-06-30 10:50:39

Qt OpenCV

2011-06-28 10:03:37

Qt OpenCV qmake

2019-12-05 10:30:17

LinuxMultitail

2011-03-22 10:06:27

LinuxZFS

2018-12-10 15:14:51

苹果iPhone手机

2020-08-25 19:56:43

MinGWWindowsGNU

2011-11-28 13:19:05

iLuaBoxiPhoneiPad

2011-03-01 11:23:37

Chrome ActiveX

2009-04-25 09:03:10

iPhoneSymbian移动OS

2011-08-10 10:18:22

iPhone多线程线程

2020-10-26 12:30:23

LinuxyumZFS

2019-10-29 16:30:10

FedoraSSH端口Linux

2020-11-24 09:52:22

MQTT

2020-04-10 09:56:12

at命令Linux安排任务

2012-04-11 13:42:53

ibmdw

2019-12-20 08:50:21

LinuxKsnip截图

2019-12-09 14:50:44

LinuxWindow Make桌面

2018-02-26 08:14:20

LinuxDocker容器
点赞
收藏

51CTO技术栈公众号