Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Frame Mat OpenCV Java检测颜色的有效方法_Java_Android_Opencv_Android Camera2_Color Detection - Fatal编程技术网

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

使用Frame Mat OpenCV Java检测颜色的有效方法,java,android,opencv,android-camera2,color-detection,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] + pFram

为了计算给定帧的平均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;
for(int i=0;i
这很好,但这项任务必须实时完成。根据matsize的不同,完成此过程可能需要很长时间,这可能是由每次迭代调用三次的get()方法引起的。(在后台线程中完成)


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

返回每个通道的平均值,应该比代码快。

这是一个很好的方法。此外,我需要排除不符合阈值的特定像素,但因此我仍然需要遍历所有像素,对吗?是的,在一般情况下,您需要逐像素处理,但如果您在另一个问题中指定详细信息,我或其他人可能能够找到更优化的解决方案。