如何在javacv中平均List <mat>而不会导致溢出?

时间:2016-11-29 16:14:24

标签: opencv javacv

我有一堆来自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()
}

但这似乎已经溢出,因为输出矩阵看起来不像平均值。我想知道是否有人知道更好的方法。

1 个答案:

答案 0 :(得分:0)

问题在于这一行:

return opencv_core.multiply(expr, 1/mats.size()).asMat()

应该阅读

return opencv_core.multiply(expr, 1.0/mats.size()).asMat()

整数除法只是导致一切都变为0。