第4周内容写在第5周上。

第5周:获取iPhone摄像头

用iPhone的摄像头拍照和录像,用标准的UIImagePickerController ,先保存到硬盘再做它用。UIImagePickerController 还可以用来拾取已经存放好的媒体资料。

上面所说的摄像头媒体这一块内容和AR 程序没有什么关联。

AR程序的图片处理流程如下:

*高频率的摄像头帧数,F1用来执行图片处理

*F2用来创建提示:“用iPhone对着这个世界”

ImagePickerController的控制栏(就是下面的Cannel按钮和摄像机图标按钮)

从iPhone OS 3.1开始能够隐藏控制面板


禁用ImagePickerController的控制栏

现在底下只有56px.高的黑色背景条,没有了控制栏。要盖住黑条,只用给摄像机视图加上矩阵变形拉伸。

1 习惯做法: 垂直方向拉伸

  • 好处: 不会丢失图片数据
  • 缺点: 变形了
  • 2 习惯做法:不改变比例放大。

 好处:没有变形

坏处:因为放大裁剪掉2边的数据。
决定:使用第2种办法。
很不幸
 注意:任何图片都可以应用变形。
现在我们就准备好了高精度的现实世界的图片。
有3种基础方法:
1 UIImagePickerController类的takePicture方法。
是iPhone OS 3.1开始引入的方法。经过测试我发现其精度只有Hz ,离我们的F1要求有差距,所以是到内存的。
2 私有API
对此我无任何经验,所以无话可说。我也不觉得有什么好。
3私有API函数UIGetScreenImage
这本来是个私有方法,但2009年年底的时候苹果开放了它。或许是因为以后的 iPhone OS 系统可以用,也可能你用了苹果不准你上架,这很难说。或许苹果会提供一个公共API。
因为这个方法只是截屏。假定你在第 t 帧截屏,那么他实际截的是第 t +1 帧,你本来是想抓照片,但UI界面也给抓下来了。
要方便使用,代码如下:

在后台线程运行,把图片保存在照片库。测试成功。