使用Frame Mat OpenCV Java检测颜色的有效方法
为了计算给定帧的平均rgb颜色,我对每个循环使用以下公式来获得平均颜色使用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
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()方法引起的。(在后台线程中完成)
有人知道更有效的方法吗?返回每个通道的平均值,应该比代码快。这是一个很好的方法。此外,我需要排除不符合阈值的特定像素,但因此我仍然需要遍历所有像素,对吗?是的,在一般情况下,您需要逐像素处理,但如果您在另一个问题中指定详细信息,我或其他人可能能够找到更优化的解决方案。