使用Frame Mat OpenCV Java检测颜色的有效方法

时间:2018-06-22 14:13:33

标签: java android opencv android-camera2 color-detection

为了计算给定帧的平均rgb颜色,我对每个循环使用以下内容以获得平均颜色。

    for (int i = 0; i < pFrame.cols(); i++) {
                    for (int j = 0; j < pFrame.rows(); j++) {
                        int pixel_rgb_avg = ((int)(pFrame.get(i, j)[0] + pFrame.get(i, j)[1] + pFrame.get(i, j)[2]) / 3);
                        r_curr += pFrame.get(i, j)[0];
                        g_curr += pFrame.get(i, j)[1];
                        b_curr += pFrame.get(i, j)[2];
                        counter_curr += 1;

                    }
    }
    r_curr = r_curr/ counter_curr;
    g_curr = g_curr/ counter_curr;
    b_curr = b_curr/ counter_curr;

这可以正常工作,但是此任务必须实时完成。根据matsize的不同,可能需要很长时间才能完成此过程,这可能是由于get()方法引起的,该方法每次迭代均被调用3次。 (这是在后台线程中完成的)

有人知道一种更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

mean()返回每个通道的平均值,并且应该比您的代码更快。