1

iPhoneアプリでタップしてフォーカスし、タップして露出するように実装しようとしています。

AVFoundation カメラ インターフェイスを使用していますが、2 つの座標系の間を移動するのに問題があります。

UIView は、左上 (縦向きモード) の (0,0) から右下の (320,480) までのシステムを使用します。

ただし、AVCaptureSession は、右上の (0,0) から左下の (1,1) までのシステムを使用します。

私は AVCamDemo を見てきましたが、これらを変換するために何もしていないようです。ある分には UIView 座標があり、次の分には AV 座標があります。

どんな助けでも大歓迎です!

ありがとう

オリバー

4

2 に答える 2

2

OK、私は何が起こっているのかを理解しました。私は家でアプリを書いているので、日中は更新できません:(

とにかく、タッチの座標系は (0,0) から (320,480) (ポートレート モードでは左上から右下) です。

対象の焦点の座標系は (0,0) から (1,1) です (ランドスケープ ライト モードでは左上から右下)。

タップしてフォーカスするには、AVCaptureVideoPreviewLayer を UIView のサブクラスに埋め込む必要があります。(これは、ビューが画面全体に表示されることを前提としています)。

タップからフォーカル ポイントに移動するには、次の手順を実行します。

タップ CGPoint (例: tapPoint) を取得します。

次に使用...

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

これを行うコードが少しあるかもしれませんが、それまではこれで十分です。

于 2010-09-10T10:27:33.727 に答える
0

これは古い質問であることは知っていますが、AVCamDemo には、すべてのvideoGravity場合に変換を行う関数がありました (コードは の場合にのみ機能しvideoGravityます) 。videoPreviewLayerAVLayerVideoGravityResize

于 2014-10-31T02:56:48.030 に答える