我有一堆来自FFMpegGrabber的帧,我正在尝试编写一个看起来像这样的方法:
private static Mat getAverage(List<Mat> mats) {
if (mats.size() == 0) {
throw new RuntimeException("no mats");
}
Mat first = mats.get(0);
Size s = first.size();
Mat total = new Mat(s);
MatExpr expr = new MatExpr(total);
for (Mat m : mats) {
expr = opencv_core.add(m, expr);
}
return opencv_core.multiply(expr, 1/mats.size()).asMat()
}
但这似乎已经溢出,因为输出矩阵看起来不像平均值。我想知道是否有人知道更好的方法。
答案 0 :(得分:0)
问题在于这一行:
return opencv_core.multiply(expr, 1/mats.size()).asMat()
应该阅读
return opencv_core.multiply(expr, 1.0/mats.size()).asMat()
整数除法只是导致一切都变为0。