2016-11-29 24 views
0

我有一堆从FFMpegGrabber帧,并且想写,看起来像一个方法:如何平均javacv中的列表<Mat>而不引起溢出?

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

问题是这一行:

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

它应该阅读

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

的整数除法刚刚造成的一切去0