【问题标题】:Convert Video frame's aspect ratio to screen dimensions将视频帧的纵横比转换为屏幕尺寸
【发布时间】:2015-07-12 19:57:09
【问题描述】:

我的应用使用相机,它处理每一帧,寻找图像中的一些元素(例如面部)。

当我在图像上找到某些内容时,我想使用自定义视图的drawRect:(CGRect)rect 在显示视频的屏幕上进行绘制。

我不只绘制矩形,也没有使用 GPU 和 GLKView。 当我运行 1920*1080 的视频帧时,我可以通过将屏幕宽度和高度除以视频帧大小来绘制确切的位置。

但是,当我更改为 480*360 视频分辨率时,元素没有绘制在正确的位置,我相信是由于纵横比的差异。 知道我需要在这里做什么转换,也许是 AffineTransfrom?

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    是的。这是由于纵横比。在我的一个项目中,我遇到了类似的问题,我做了以下事情。

    1. 找到比例因子

      float xScale = destionation.size.width / imageSize.width;//destination为最大图像绘制区域。

      float yScale = destionation.size.height / imageSize.height;

      float scaleFactor = xScale

    2. 找到绘图矩形

      float destinationHeight = destionation.size.height * scaleFactor;

      float destinationWidth = destionation.size.width * scaleFactor;

      这将为您提供一个矩形,该矩形可以以纵横比保存图像。并使用此矩形绘制您的图像。您也可以通过将中心点乘以比例因子来将此矩形与视图中心对齐。

    3. 现在通过乘以比例因子将您的面部矩形从图像大小转换为绘图矩形。

    4. 使用转换后的点在目标矩形上绘制矩形。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 2019-06-22
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 2012-08-23
      • 2023-04-08
      • 2016-08-06
      相关资源
      最近更新 更多