2012-06-22 33 views
6

我正在研究一個應用程序,在該應用程序中我必須檢測左眼,右眼和嘴巴位置。 我在我的self.view上有一個imageView,imageView包含一個臉部圖像,現在我想要得到雙眼和嘴巴座標。我已經看到了2-3個樣本代碼,但所有代碼都大致相同,我們必須顛倒我的視圖以匹配我不想要的座標,因爲我的視圖有其他控件。還有一件事他們都在使用使用CIDetector的人臉檢測問題

UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"image.png"]]; 

但我的imageView有框架,我不能初始化它與圖像。當我這樣做時,我發現faceFeature的眼睛和嘴巴座標錯誤。

我已經從this sample code開始了我的代碼,但是在這個視圖中正在反轉它的Y座標。

任何人都可以幫助我如何檢測UIImageView的圖像上的臉部眼睛和嘴部位置,而不會顛倒我的self.view。

讓我知道我的問題是否不夠清楚。

任何幫助將不勝感激,提前致謝!

回答

0

解決了它! - 編輯類有一個faceContainer包含所有的面部對象(嘴和眼睛),然後這個容器旋轉,這就是所有。顯然這很粗糙,但確實有效。這是一個鏈接,http://www.jonathanlking.com/download/AppDelegate.m。然後用它替換示例代碼中的應用程序委託。

- 舊帖子 -

看一看這個Apple Documentation,並從this apple talk滑板42起。你也應該看這個演講,因爲它有一個你想要實現的演示,它被稱爲「在iOS OS & Mac OS X上使用核心映像」,並且是here

+0

感謝您的回覆,但您想要解釋什麼?我知道如何使用CGImage檢測faceFeature眼睛和嘴巴的位置,我的問題不同,我有uiimageview的uiimage的問題。 – TheTiger

+0

對不起,完全誤解了你的問題! –

+0

不是..... :-) – TheTiger

1

這裏的技巧是將返回的點和邊界從CIDetector轉換爲座標,而不是翻轉自己的視圖。 CIImage在底部原點留下您將需要轉換到左上角

int height = CVPixelBufferGetHeight(pixelBuffer); 
CGAffineTransform transform = CGAffineTransformMakeScale(1, -1); 
transform = CGAffineTransformTranslate(transform, 0, -1 * height); 

/* Do your face detection */ 

CGRect faceRect = CGRectApplyAffineTransform(feature.bounds, transform); 
CGPoint mouthPoint = CGPointApplyAffineTransform(feature.mouthPosition, transform); 
// Same for eyes, etc 

您關注的UIImageView的第二個問題,你只需要做

imageview.image = yourImage 

你已經初始化您的ImageView