我有一个应用程序可以从 AVCaptureDevice 样本缓冲区委托中找到 QR finder 标记。现在我正在尝试在屏幕上放置框以覆盖 QR 标记。但是,我无法在 1280x720 像素分辨率和 cameraView 大小之间进行转换。
我正在尝试编写一个基于这些参数转换 CGRect 的方法(以及视图坐标系颠倒的事实),但它不起作用。它也可能与相机设备的方向有关。这是我的转换方法代码:
-(CGRect) convertRect:(CGRect) oldRect From90DegreeRotatedCameraSize1280x720ToUIViewSize:(CGSize) viewSize
{
//remember that we are using a gravity of resize aspect fill
double xScale = viewSize.width / 720;
double yScale = viewSize.height / 1280;
if (xScale < yScale)
return CGRectMake(oldRect.origin.x * xScale, viewSize.height - oldRect.origin.y * xScale, oldRect.size.height * xScale, oldRect.size.width * xScale);
else
return CGRectMake(oldRect.origin.x * yScale, viewSize.height - oldRect.origin.y * yScale, oldRect.size.height * yScale, oldRect.size.width * yScale);
}
有人能优雅地解决这个相对简单的空间坐标问题吗?
编辑 -
我做了一个连接视频方向的 NSLog,结果它永远不会从 1 改变(我认为它被枚举为纵向方向。)从这里,应该更容易找到解决方案,因为坐标不会改变不同的方向。
任何想法,编码器社区?