1

我正在尝试在我的 iPhone 应用程序中实现点击聚焦和点击曝光。

我正在使用 AVFoundation 相机界面,但在 2 个坐标系统之间移动时遇到问题。

UIView 使用从左上角(纵向模式)的 (0,0) 到右下角的 (320,480) 的系统。

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

我看过 AVCamDemo 但它似乎没有做任何转换这些,前一分钟你有 UIView 坐标,下一分钟你有 AV 坐标。

任何帮助表示赞赏!

谢谢

奥利弗

4

2 回答 2

2

好的,我弄清楚发生了什么。我正在家里编写应用程序,但白天无法更新:(

无论如何,触摸的坐标系统是从 (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情况下进行转换(您的代码仅videoGravityvideoPreviewLayeris的情况下才有效AVLayerVideoGravityResize

于 2014-10-31T02:56:48.030 回答