捉襟见肘之UIImagePickerController 和自定义照相机
目标:自拍并结合C++算法,识别人脸信息,第一步骤,调用相机并且自定义界面和转场效果
先复习一下
https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UIImagePickerController_Class/index.html
The UIImagePickerController class manages customizable, system-supplied user interfaces for taking pictures and movies on supported devices, and for choosing saved images and movies for use in your app. An image picker controller manages user interactions and delivers the results of those interactions to a delegate object.
cameraOverlayView 自定义用户的界面
#pragma mark - Private
- (BOOL)availableCamera
{
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
NSLog(@"您的相机没有或者无法使用");
return NO;
}
_pickerController = [[UIImagePickerController alloc] init];
_pickerController.delegate = self;
_pickerController.view.backgroundColor = [UIColor orangeColor];
_pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
_pickerController.allowsEditing = YES;
if (![UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront])
{
NSLog(@"您的手机不支持前置摄像头");
return NO;
}
_pickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
return YES;
}
但是由于,上述效果达到不了设计效果,所以只能启用。
所以决定,自定义摄像头,下面是学习整理的资料,如有错误麻烦指出
在进行视频捕获时,有输入设备及输出设备,程序通过 AVCaptureSession 的一个实例来协调、组织数据在它们之间的流动。

在正式学习之前,先了解一下AVFoundation框架
#import <AVFoundation/AVFoundation.h>
1.AVFoundation在相关框架栈中的位置:

2.跟视频相关的几种类
// 用于协调输入与输出之间的数据流 @property (nonatomic, strong) AVCaptureSession * session; // 用于设备输入数据源 @property (nonatomic, strong) AVCaptureDeviceInput * videoInput; // 限制自定义相机只有拍照功能 @property (nonatomic, strong) AVCaptureStillImageOutput * stillImageOutput; // 提供摄像头的预览功能 @property (nonatomic, strong) AVCaptureVideoPreviewLayer * previeLayer;
他们的作用衔接起来可以用下图概括

3.用AVFoundation框架捕捉视频流
(1.创建AVCaptureSession
作为协调输入与输出的中心,第一步创建一个session
...
最终效果实现,但是,在解决图片的时候,出现了问题,因为忽略了EXIF中的UIImage的imageOrientation,我将会再一次重写自定义照相机
参考链接:
http://course.gdou.com/blog/Blog.pzs/archive/2011/12/14/10882.htmlhttp://blog.csdn.net/wrathli/article/details/39431287?utm_source=tuicool
捉襟见肘之UIImagePickerController 和自定义照相机的更多相关文章
- Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)
Android自定义照相机实现 近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难,下面就是 ...
- android 自定义照相机Camera黑屏 (转至 http://blog.csdn.net/chuchu521/article/details/8089058)
对于一些手机,像HTC,当自定义Camera时,调用Camera.Parameters的 parameters.setPreviewSize(width, height)方法时,如果width和hei ...
- UIImagePickerController 获取相片视频
1.UIImagePickerController的静态方法: imagepicker = [[UIImagePickerController alloc]init]; //UIImagePic ...
- UIImagePickerController详解
转载自:http://blog.csdn.net/kingsley_cxz/article/details/9157093 1.UIImagePickerController的静态方法: imagep ...
- UIImagePickerController 操作图库
UIImagePickerController详解 转载自:http://blog.csdn.net/kingsley_cxz/article/details/9157093 1.UIImage ...
- iOS使用AVCaptureSession自定义相机
关于iOS调用摄像机来获取照片,通常我们都会调用UIImagePickerController来调用系统提供的相机来拍照,这个控件非常好 用.但是有时UIImagePickerController控件 ...
- Android相机使用(系统相机、自定义相机、大图片处理)
本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理(避免OOM),还有简要提一下有些人Surf ...
- Android照相机应用
前言 Android在设计架构的时候,采用了mashup(混搭)的设计理念,也就是说一切都是组建,自己写的是组件,别人提供的也是组件,使用的时候只要符合相关协议就可以把他们当作自己的组件.比如系统提供 ...
- Android多媒体之照相机
1.调用系统的照相机 public void click(View view) { // 激活系统的照相机拍照 Intent intent = new Intent("android.med ...
随机推荐
- [转]linux 系统监控、诊断工具之 IO wait
1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...
- 路由信息协议(RIP)的防环机制
防环机制 1-记数最大值(maximum hop count):定义最大跳数(最大为15跳),当跳数为16跳时,目标为不可达. 2-水平分割(split horizon):从一个接口学习到的路由不会再 ...
- Swift&NodeJS 使用Alamofire进行Post(zhuan)
这篇博客主要实现Swift客户端和NodeJS后台的Post.Get请求实现. 我是一个略有点讨厌重复使用工具的人,比如这些基本功能完全可以用OC和PHP等替代,但是没办法,现在知识更新的太快啦,Sw ...
- c#模拟表单POST数据,并获取跳转之后的页面
直接看代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...
- Linux 下以其他用户身份运行程序—— su、sudo、runuser
本文综合分析了Linux系统下,如何使用runuser命令.su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较. 一.su 命令临时切换用户身份 SU:( Switch ...
- pycharm常用快捷键总结
http://blog.csdn.net/pipisorry/article/details/39909057 在PyCharm /opt/pycharm-3.4.1/help目录下可以找到Refer ...
- 根据位置信息提取 fasta 文件中的序列 -- extract fasta sequence by their position
#!/usr/bin/env python # usages: python extract_seq_by_pos.py input.fasta id_start_end > result.fa ...
- (String)、toString、String.valueOf的区别
String.valueOf()它可以将JAVA基本类型(int,double,boolean等)和对象(Object)转换成String型toString()是对象的方法,它可以将该对象转换成Str ...
- 精通Web Analytics 2.0 (2) 内容简介
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 这本书里有什么? 这本书是在我第一本书<网站分析:每天一小时>的基础上创作的.我并不打算绕弯子,第一章是网站分析2. ...
- [bzoj1009][HNOI2008]GT考试
Description 阿申准备报名参加考试,准考证号为位数,他不希望准考证号上出现不吉利的数字. 他的不吉利数学有位,不出现是指中没有恰好一段等于. 可以为. Input 第一行输入.接下来一行输入 ...