2010-09-10 45 views
1

我正在嘗試在自己的iPhone應用程序中實現點按以聚焦並點按曝光。將CGPoint從UIView轉換爲AVCaptureVideoPreviewLayer

我正在使用AVFoundation相機接口,並且在兩個協同系統之間移動時遇到問題。

UIView使用系統從左上角(縱向模式)的(0,0)到右下角的(320,480)。

但是,AVCaptureSession使用的系統從右上角的(0,0)到左下角的(1,1)。

我已經看過AVCamDemo,但它似乎沒有做任何事情來轉換這些,一分鐘你有UIView coords和下一個你有AV coords。

任何幫助表示讚賞!

感謝

奧利弗

回答

2

OK,我摸索出了事情的原委。我在家裏編寫應用程序,但無法在白天進行更新:(

無論如何,觸摸的座標系是從(0,0)到(320,480)(縱向從左上角到右下角模式)。

感興趣的焦點的座標系是(0,0)(1,1)(左上到橫向向右模式右下圖)。

爲了得到水龍頭爲了集中你需要一個嵌入到UIView子類中的AVCaptureVideoPreviewLayer(我假設在整個屏幕上顯示該視圖)

要從一個水龍頭到一個foc要點如下。

獲取點擊CGPoint(例如tapPoint)。

然後用...

CGPoint focalPoint = CGPointMake(tapPoint.y/480, (320 - tapPoint.x)/320); 

可能有一些代碼,這是否對你,但在那之前,這將是足夠的。

+1

這已爲每個做手機定位。 – Fogmeister 2010-09-15 13:45:24

0

我知道這是一個老問題,但有在AVCamDemo的功能做在所有videoGravity箱子轉換(代碼僅在videoPreviewLayervideoGravityAVLayerVideoGravityResize工作)