gpt4 book ai didi

ios - 为什么需要在图像格式之间进行如此多的转换? (UIImage, CGImage, CIImage)

转载 作者:可可西里 更新时间:2023-11-01 05:00:12 24 4
gpt4 key购买 nike

我很困惑为什么 iOS 需要如此多的图像格式转换。例如,如果我将一个 jpg 加载到一个 UIImage 中,然后想对其进行人脸检测,我需要创建一个 CIImage 以传递给 CIDetector。这不代表内存和性能都受到了影响吗?

这是 Core Graphics、Core Image 和 UIKit 之间的遗留问题吗(可能还有 openGL ES,但我不使用它)?总的来说命中是微不足道的吗?

我会做我需要做的事,但我想了解更多这方面的信息。此外,我有时会在进行转换时遇到问题,并且会纠结于格式之间的差异。


更新

好的 - 所以我对这些格式的混淆(或这些格式的混淆......)再次让我感到沮丧。浪费了半个小时。这是我正在做的:

测试本地镜像中的人脸,我创建了所需的 CIImage:

CIImage *ciImage = [image CIImage];

并且无论我传入什么方向都没有得到任何特征。我知道这个特定的图像在和CIDetectorTypeFace > 我遇到了 CIImage 格式的问题。尝试像这样创建 CCImage:

 CIImage *ciImage = [CIImage imageWithCGImage:image.CGImage];

人脸检测工作正常。啊!我用 [image CIImage] 确保生成的 CIImage 不为零。所以我很困惑。第一种方法只是获取一个指针,而第二种方法创建一个新的 CIImage。这有区别吗?

深入研究 UIImage.h 文件,我看到以下内容:

// returns underlying CGImageRef or nil if CIImage based
@property(nonatomic,readonly) CGImageRef CGImage;

// returns underlying CIImage or nil if CGImageRef based
@property(nonatomic,readonly) CIImage *CIImage;

所以我想这就是关键 - 开发人员当心:测试 nil...

最佳答案

原因在于构想。所有 UIKit、CoreGraphics 和 CoreImage 都做了三件根本不同的事情,因此不可能有一个“中央统一图像格式”。此外,这些框架合作良好;也就是说,转换应该尽可能优化和尽可能快,但当然图像处理始终是一个计算成本相对较高的操作。

关于ios - 为什么需要在图像格式之间进行如此多的转换? (UIImage, CGImage, CIImage),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com