ios 将CVPixelBuffer放入正方形图像中,并保存大小调整和纵横比

3b6akqbq  于 2022-12-15  发布在  iOS
关注(0)|答案(2)|浏览(99)

我有一个图像,应该在传递到CoreML之前进行预处理,以640x640平方与大小调整和保存纵横比(检查图像).我发现了很多有用的链接使用vImageScale_*调整大小,但还没有找到任何类似的添加彩色填充到调整大小的图像.
我知道Vision有scaleFitoption,但最终输出有点不同,所以我试图使图像居中。

fnx2tebb

fnx2tebb1#

vImageScale_*函数缩放以适合目标,因此如果源和目标的纵横比不同,纵横比也会改变。
vImage提供仿射变换操作(支持背景色!)。请查看https://developer.apple.com/documentation/accelerate/applying_geometric_transforms_to_images了解更多信息。最后一个示例 Apply a Complex Affine Transform to a vImage Buffer 完全符合您的需要(您只需删除旋转步骤)。

mlnl4t2r

mlnl4t2r2#

彩色填充将是类似于vImageBufferFill_ARGB8888的内容,中间位将是vImageScale_ARGB8888。由于缩放操作使用整数高度、宽度和原点,因此无需担心区域之间接缝处内容的抗锯齿。
请注意,使用CGBitmapContextRef和CGContextDrawImage(CGContextRef,CGRect,CGImageRef)也相对容易,尽管CG只使用Lanczos2重采样器。您将有更少的细节来微观管理图像方向和色彩空间转换,并且它允许小数像素放置。
你也可以使用vImage来获得小数像素的位置,但是需要使用AffineWarp或者剪切函数。我可能不会尝试做太多的图像处理,以防振铃有一些奇怪的影响。一个简单的低通滤波器+双线性插值可能是尝试。这将是一个有点模糊的人眼,但可能会避免饲料伪像的训练工作量。大概有大量关于ML图像预处理的文献可以为您提供指导。

相关问题