是否可以使用 VImage 检查两个捕获的帧之间的差异?

Posted

技术标签:

【中文标题】是否可以使用 VImage 检查两个捕获的帧之间的差异?【英文标题】:Is it possible to check difference between two captured frames from using VImage? 【发布时间】:2020-10-15 05:48:11 【问题描述】:

当我们开始录制 mac 屏幕时,我有一个问题。我只需要使用唯一的帧而不是重复的帧。是否可以使用 Macos 加速框架进行过滤?

【问题讨论】:

【参考方案1】:

可以使用 vDSP 来做到这一点。 Apple 的Finding the Sharpest Image in a Sequence of Captured Images 示例代码讨论了在 vImage 和 vDSP 之间共享数据。收集两张图像的像素值后,使用subtract(_:_:) 查找差异,然后使用maximum(_:) 查找最大元素的值。如果最大值小于某个阈值,则两个缓冲区相同。

请注意,vDSP 不适用于 Pixel_8 值 - 如果您不捕获每通道 32 位像素,则需要转换为 Float,这可能会产生开销。

当然,根据您捕获屏幕的方式,您可能根本不需要 vImage。例如,如果您正在获取 CVPixelBuffer 实例,请使用 CVPixelBufferGetBaseAddressOfPlane 将数据传递给 vDSP。

【讨论】:

以上是关于是否可以使用 VImage 检查两个捕获的帧之间的差异?的主要内容,如果未能解决你的问题,请参考以下文章

如何同步线程以捕获相同数量的帧?

如何在 c++ winform 中的线程之间传递数据?

Accelerate 的 vImage 与 vDSP

iOS 使用 vImage - 加速将 QCAR YUV 转换为 RGB

如何检查 3 个列表之间的内容?

从捕获的帧中裁剪三角形 - OpenCV 和 C++