【问题标题】:Resize an image with OpenGL ES 2.0使用 OpenGL ES 2.0 调整图像大小
【发布时间】:2012-06-29 09:21:34
【问题描述】:

我的问题很简单:我必须处理视频的每一帧。该过程计算一个区域以在原始帧上进行裁剪。为了获得更好的性能,我必须缩小原始帧。如今,这要归功于一个专门的图书馆。但是,它很慢。由于 OpenGL ES 2.0 glsl,我们想知道是否有可能缩小此帧。

大卫

【问题讨论】:

  • 您是否要实时缩小它们?或者您是否有可能在展示视频之前进行预处理阶段
  • 事实上我的处理应该在视频播放过程中实时发生。我会查看 wwdc 2012 视频。

标签: ios image-processing avfoundation opengl-es-2.0


【解决方案1】:

如果您使用 AV Foundation 从磁盘加载视频或从相机中提取视频,您可以使用我的开源 GPUImage 框架为您处理底层的 OpenGL ES 处理。

具体来说,您可以使用 GPUImageCropFilter 在 CGRect 中使用标准化的 0.0-1.0 坐标裁剪输入视频的选定区域。 FilterShowcase 示例展示了如何在实践中对来自摄像机的实时视频进行操作。有了这个,如果你不想,你就不需要手动调用任何 OpenGL ES API。

【讨论】:

  • 谢谢布拉德,我已经在 github 上关注了你的项目 :)。我将在视频管道的末尾使用您的裁剪过滤器。在裁剪每一帧之前,我需要计算一个边界框。为了处理它,我需要一个二次采样帧(从高清我需要一个 320x200 图像)。
【解决方案2】:

最后,我将使用一个帧缓冲对象来渲染我的纹理。我将视口设置为所需的大小并像往常一样渲染我的纹理。为了取回下采样的图像,我将使用 glGetReadPixels。

大卫

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2011-08-11
    • 2013-05-06
    • 2012-04-05
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多