如何从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计算吗?
答案 0 :(得分:0)
你正在做正确的事。如果您想要平均值,则必须在您正在测量的区域中添加所有红色通道的值。即使你使用过滤器来隔离红色通道,它也必然会成为同样的东西。像我一样经历像素缓冲区是我认为最快的方式。
您可以根据您拥有的其他信息进行优化(例如,它的统一程度),这样您就可以减小矩形的大小。或者您可以跳过其他所有像素(例如或更多)。我想象一下,在照片上,这会产生一个可接受的近似平均结果。它会减少你必须扫描的区域。
只是想给你额外的途径......