现在全景越来越火,既有的设备如日本的理光相机就可以做到拍摄360°全景照片的功能,但是售价也是相当的感人.其实在iPhone手机上我们也可以借助现有的开源库实现这个功能,比如:openCV.

openCV给我们提供了现成的实现方案,而且相当简单:
1.打开冰箱门;
2.把大象装冰箱;
3.合上冰箱门.

开个玩笑.
实现起来也是一样的:
1.导入openCV的SDK;
2.添加需要的SDK;
3.调用一个接口就行了.

首先,可以在openCV的这里下载framework,添加到项目里面,导入

ImageIO.framework
libz.tbd,
CoreVideo.framework,
AssetsLibrary.framework,
CoreMedia.framework.
需要注意的是,我们还需要一个叫做libjpeg.a的静态库,这同样是一个图片处理库,网上很多就不提供链接了.

其实核心功能openCV都已经帮我们实现了,这里提供了一个工程,由于github不能上传超过100M的文件,就只放了这些上去,下载到本地后添加你刚才下好的openCV.framework和libjpeg.a以及上面那些依赖就可以用了.
生成图片就一句话:

        UIImage * image = [CVWrapper processWithArray:self.photos];

下面说说关键的部分.

在我的测试中发现,当图片超过4张(每张分辨率为3200*2400)的时候,CPU使用率会飙升到200%,当然这没什么大不了的,关键是内存会暴增:超过600M,导致收到内存警告而crash.
而使用iPhone6S拍摄时,因为分辨率达到了4000*3000,内存更是升到1G多!
其实想想也是,图片拼接也是采用的遍历像素,识别到相似点,然后缝合,当图片越来越多的时候,像素也越来越大,需要遍历的时间和消耗的内存肯定就越来越多了.
当图片分辨率降到1500*1000左右的时候,一部iPhone6S可以轻易的处理超过15张图片.
其实openCV本就是给PC端使用的,配合电脑的GPU,openCV可以实现很强大炫酷的功能,但是在iPhone这样ARM架构上想要实现这样消耗内存的事情就有点勉为其难了.

总结

对于一般简单的图片拼接,使用openCV可以简单又方便的实现,但是对于需要VR这种高清大图的需求来说,就有点捉襟见肘了,个人建议还是放在服务端来做.

iOS 利用openCV拼接照片实现拍摄全景照片相关推荐

  1. python换照片底色_Python 利用OpenCV给照片换底色的示例代码

    OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和M ...

  2. iOS利用OpenCV 实现文字行区域提取的尝试

    一些探索 最近下了几个OCR的App(比如白描),发现可以选中图片中的文字行逐行转成文字,觉得很有意思(当然想用要花钱啦),想着自己研究一下实现原理,google之后,发现了两个库,一个是OpenCV ...

  3. opencv处理dicom图像_图像处理|opencv| 利用opencv把照片变换成素描风格

    大家好我是阿猩学长,今天给大家利用图像处理库opencv来把图片转换为素描的风格. 其中利用的编程语言为C++. 话不多说先给大家看看实际的效果图. 原图 处理后的图片 原图 效果图 下面先给大家介绍 ...

  4. 图像处理|opencv| 利用opencv把照片变换成素描风格

    大家好我是阿猩,今天给大家利用图像处理库opencv来把图片转换为素描的风格. 其中利用的编程语言为C++. 话不多说先给大家看看实际的效果图. 下面先给大家介绍一下大概的编程思路,再结合代码给大家分 ...

  5. 利用opencv拼接图像视频摄像头进行录像

    将图像拼接成视频格式 今天想将5000张图片转换成视频格式,操作如下: import os import cv2 import numpy as nppath = '/home/violet/Pych ...

  6. 13款用于拍摄全景照片的iOS应用

    全景图是一种大画幅.用来展示尽量多的周围环境的照片,甚至能够展示一个球状的完整空间,让观赏者直接"站在"摄影师的位置,在照片里将该环境一览无余.全景照片能够以最直观的方式向人们展示 ...

  7. IOS下利用OpenCV框架去除视频水印

    想做个去水印的APP,第一个想到的就是CV里的inpaint图像修复技术.就想着把CV框架放在IOS中用,由于第一次接触IOS的开发,就看了两本实习时候导师大神推荐的书,很多东西都不太了解,虽然CV官 ...

  8. 怎样拍摄全景照片?全景图片拍摄流程

    拍摄全景照片如今已经成为一股潮流,特别是在摄影界,全景照片的拍摄已经成为了专业摄像师的必备技术,这种身临其境的视觉展示手段也更加受到观看用户的欢迎,那么怎样拍摄全景照片?今天小编就教给大家一些全景拍摄 ...

  9. 利用opencv对图像进行长曝光

    利用opencv对图像进行长曝光 本文首发于公众号[Opencv视觉实践],翻译自光头哥哥的博客: [Long exposure with OpenCV and Python],仅做学习分享. 原文链 ...

最新文章

  1. iOS引入第三发库引发的错误linker command failed with exit code 1
  2. Android开发必看知识,不看后悔
  3. Angular单元测试框架里API toHaveBeenCalledTimes的工作原理
  4. ansible中yaml语法应用
  5. [转]centos7下yum安装mysql
  6. nodejs面试题笔记
  7. 交换机Vlan中 tagged和untagged的区别
  8. multisim 10 小知识
  9. 第八讲 函数直接展开成幂级数
  10. mysql blast2go_blast2go本地化教程
  11. 简单代码变出超个性化的QQ昵称
  12. Kubernetes如何被应用在华为
  13. WEB相关:Windows下打造完美的服务器平台
  14. 乐博机器人Arduino周五班级,入门课程,碰撞开关控制灯闪烁
  15. 洞见 SELENIUM 自动化测试
  16. xe6 动态元素数量
  17. eclipse安装STS支持注意的坑
  18. SVN windows 快速入门
  19. Apple watch 回收如何选择
  20. 数学简史:数学是一门非常重要的学科,它在各个领域都有着广泛的应用。从古代到现代,数学一直在不断发展和演变,为我们提供了无尽的智慧和启示。

热门文章

  1. 解决Python官网打不开
  2. 矩阵导数(Matrix Differentia)
  3. 三维比例导引 matlab,三维比例导引律(源程序)
  4. 马克思主义哲学笔记(一)
  5. 前端框架比比看:bootstrap, bulma, foundation, material-design-lite, materialize-css, semantic-ui
  6. 从游戏中学习产品设计2:消费篇
  7. 乌班图18下安装QQ
  8. 解决WindTerm屏幕锁定
  9. 38译码器真值表讲解_74138译码器真值表及引脚图功能
  10. SORT跟踪算法的详细解释,不容错过