2012-08-12 90 views
4

我正在使用CIDetector在圖片中查找人臉。iOS目標C將座標從絕對圖像位置轉換爲我的視圖座標系

它返回的面的座標是圖像文件中的絕對座標(圖像尺寸明顯大於屏幕尺寸)。

我試着使用converRect:toView命令。圖像本身不是一個UIView,所以命令不起作用,我也有一些嵌入到其他圖像中的視圖,最終顯示圖像。

我想將圖像中找到的面的邊界轉換爲嵌入圖像中屏幕上顯示的面的確切位置。

這是如何實現的?

謝謝! The image being shown on the phone - the image is scaled to fit the screen with aspect fit

回答

8

CIDetecter(CoreImage)的座標相對於UIKit座標翻轉。在iOS人臉檢測中有大量的教程,但其中大部分都是不完整或混亂的座標。這裏有一個是正確的:http://nacho4d-nacho4d.blogspot.com/2012/03/coreimage-and-uikit-coordinates.html

有一點需要注意:本教程使用一個小圖像,因此得到的座標不必縮放到圖像的屏幕(UIImageView)表示。假設您使用iPad相機拍攝的照片,則必須按照縮放源圖像的量來縮放座標(除非在運行人臉檢測程序之前縮小其尺寸 - 可能不是一個壞主意)。您可能還需要旋轉圖像以獲取正確的方向。

有一個在其中一個答案例行這裏旋轉/縮放:UIImagePickerController camera preview is portrait in landscape app

而且這個答案有若用「方面適合」一個UIImageView呈現找到一個圖像的縮放良好的例行:How to get the size of a scaled UIImage in UIImageView?

您將需要使用縮放比例,以便將CIDetector座標從全尺寸圖像映射到UIImageView中顯示的縮小圖像。