我想检测并标记图像上最亮和最暗的部位。
例如,我正在创建AVCaptureSession并使用AVCaptureVideoPreviewLayer在屏幕上显示视频帧。现在在这个相机输出视图中,我希望能够标记当前最暗和最亮的点。
我必须阅读图像像素数据吗?如果是这样,我该怎么做?
答案 0 :(得分:3)
在任何情况下,您都必须读取像素才能检测到这一点。但是,如果你想要快速,不要读每个像素:只读100中的一个:
for (int x = 0; x < widgh-10; x+=10) {
for (int y = 0; y < height-10; y+=10) {
//Detect bright/dark points here
}
}
然后,您可以阅读找到的像素周围的像素,以使结果更正确
这是获取像素数据的方法:stackoverflow.com/questions/448125 / ... ...在最亮点,红色+绿色+蓝色必须最大(225 + 225 + 225 = 675 = 100%白色) )。在最暗点,红色+绿色+蓝色必须最小(0 = 100%黑色)。