使用透视变换矫正扭曲的图(opencv)矩形边缘检测(原生CoreImage框架下CIDetector)

使用透视变换矫正扭曲的图(opencv)和矩形边缘检测(原生CoreImage框架下CIDetector)都是基于iOS版本

之前也找了很多都是vs啊,android啊,运用xcode的.mm混合编译时出现一大堆崩溃问题,无奈跨平台移植demo无果,只好搞原生iOS工程下的

运用场景:手机拍照目标文件往往有一个角度,或者目标文件之外的物体,需要经过处理后只要目标文件,且正视无角度倾斜

主要意思就是手机拍照

摄像头观察一个矩形的图片时往往只能得到一个扭曲的图片:

原图:(处理后的)


实际情况是摄像头经常从某个角度观察图片:(原始的未处理的)


方法一.使用opencv的透视变换把图片矫正为正视的角度

大概过程:

1、通过灰度、模糊和二值化得到:


2、然后对查找图片外包矩形轮廓,并查找角点得到:


3.通过梯形四个角点和外包矩形的四个顶点得到变换矩阵,进行投射变换,最后得到:


方法二.原生CoreImage框架下CIDetector进行矩形边缘检测

这是iOS的一个原生api

coreImage framework 组成

apple 已经帮我们把coreImage的处理分类好,来看看它的结构:

主要分为三部分:

1)定义部分:CoreImage 何CoreImageDefines。见名思义,代表了CoreImage 这个框架和它的定义。

2)操作部分:

滤镜(CIFliter):CIFilter 产生一个CIImage。典型的,接受一到多的图片作为输入,经过一些过滤操作,产生指定输出的图片。

检测(CIDetector):CIDetector 检测处理图片的特性,如使用来检测图片中人脸的眼睛、嘴巴、等等。(这里我们将用到这个CIDetector进行矩形边框的检测,不仅仅局限于人脸的检测)

特征(CIFeature):CIFeature 代表由 detector处理后产生的特征。

3)图像部分:

画布(CIContext):画布类可被用与处理Quartz 2D 或者OpenGL。可以用它来关联CoreImage类。如滤镜、颜色等渲染处理。

颜色(CIColor):   图片的关联与画布、图片像素颜色的处理。

向量(CIVector): 图片的坐标向量等几何方法处理。

图片(CIImage): 代表一个图像,可代表关联后输出的图像。

iOS的人脸识别从iOS 5(2011)就有了,不过一直没怎么被关注过。人脸识别API允许开发者不仅可以检测人脸,也可以检测到面部的一些特殊属性,比如说微笑或眨眼。

人脸识别过程一般分为以下3个步骤:

1.首先建立人脸的面纹数据库.可以通过照相机或摄像机采集人脸的面相图片,将这些面相图片生成面纹编码保存到数据库中.

2.获取当前人脸面相图片.即通过照相机或摄像机采集人脸的面相图片,将当前的面相文件生成面纹编码

3.用当前的面纹编码与数据库中的面纹编码进行对比

在iOS5之后提供人脸识别的API,通过提供的CIDetector类可以进行人脸特征识别,CIDetector是CoreImage框架中的一个特征识别滤镜,CIDetector主要用于人脸特征识别.通过它还可以获得眼睛和嘴的特征信息.但是CIDetector并不包括面纹编码提取,面纹编码处理还需要更为复杂的算法处理.也就是说使用CIDetector类可以找到一张图片中的人脸,但这张脸是谁,CIDetector无法判断,这需要有一个面纹数据库,把当前人脸提取面纹编码然后与数据库进行对比.(openCV FACE.COM)

CIContext *context = [CIContext contextWithOptions:nil];

UIImage *imageInput = [_inputImageView image];

CIImage *image = [CIImage imageWithCGImage:imageInput.CGImage];

//设置识别参数

NSDictionary *param = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh

forKey:CIDetectorAccuracy];

//声明一个CIDetector,并设定识别类型

CIDetector* faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace

context:context options:param];

//取得识别结果

NSArray *detectResult = [faceDetector featuresInImage:image];

UIView *resultView = [[UIView alloc] initWithFrame:_inputImageView.frame];

[self.view addSubview:resultView];

for(CIFaceFeature* faceFeature in detectResult) {

//脸部

UIView* faceView = [[UIView alloc] initWithFrame:faceFeature.bounds];

faceView.layer.borderWidth =1;

faceView.layer.borderColor = [UIColor orangeColor].CGColor;

[resultView addSubview:faceView];

[faceView release];

//左眼

if(faceFeature.hasLeftEyePosition) {

}

//右眼

if(faceFeature.hasRightEyePosition) {

}

//嘴巴

if(faceFeature.hasMouthPosition) {

}

}

[resultView setTransform:CGAffineTransformMakeScale(1, -1)];

[resultView release];

也就是说,你去银行办理银行卡出银行卡的机器(现在都是类似于ATM一样的机器出卡,不用在人工窗口进行办卡出卡了)对你进行拍照,最后形成面纹数据库从而永久保存,一直到你over掉这个数据库依然永久存在,这一点是多么的可怕,办卡且行且珍惜吧。。。。

这里只是进行矩形边框的识别,至于人脸的识别参见:

iOS之使用CoreImage进行人脸识别

至于用那个方法读者自己甄别

参考demo参见:

OpenCVAndCoreImage-CIDetector

链接: https://pan.baidu.com/s/1eSAixhg 密码: jd7i

若是此demo帮助到了你欢迎大赏和start

更多资源学习交流群:群号:224110749

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容