2

如何从 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 计算,这可能吗?

4

1 回答 1

0

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

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

只是想给你额外的途径......

于 2012-08-27T18:21:49.510 回答