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

为了计算给定帧的平均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次。(这是在后台线程中完成的)


有谁知道更有效的方法来做到这一点?


墨色风雨
浏览 272回答 1
1回答

繁花不似锦

mean()&nbsp;返回每个通道的平均值,并且应比您的代码更快。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java