【问题标题】:How to get average value of Red channel from the UIImage如何从 UIImage 中获取红色通道的平均值
【发布时间】:2024-01-12 12:38:01
【问题描述】:

如何从 UIImage 中获取红色通道的平均值。

使用此代码我可以找出像素的红色通道值 (240,160)

CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);


        int pixelInfo = ((image.size.width * 240) + 160) * 4; // The image is png

        UInt8 red = data[pixelInfo];  

我感兴趣的是从整个图像的所有像素中找到红色通道值的平均值,或者只是图像的一个正方形部分。

如果不使用 320*480 计算,这可能吗?

【问题讨论】:

    标签: iphone objective-c uiimage rgb pixel


    【解决方案1】:

    你做对了。如果您想要平均值,则必须在您正在测量的区域中添加所有红色通道的值。即使您使用过滤器来隔离红色通道,它也将本质上是相同的。在我看来,像你一样通过像素缓冲区是最快的方法。

    您也许可以根据您拥有的其他信息(例如,它的均匀程度)进行优化,这样您就可以减小矩形的大小。或者,例如(或更多),您也许可以跳过所有其他像素。我想在照片上,这将产生可接受的平均值近似结果。这将减少您必须扫描的区域。

    只是想给你更多的途径......

    【讨论】: