如何在 OpenCV 中混合多个图像?

use*_*190 3 c++ opencv

我有一组图像和相关的权重。我想把它们融合在一起。我知道 OpenCV 中有一个混合命令来混合两个图像。但是如何将多个图像混合在一起?

sau*_*hts 5

可以使用以下代码进行混合(这是在 Java 中使用 OpenCV):

//Create a black-colored image
Mat mergedImage = new Mat(inputImageSize, inputImageType, new Scalar(0));
//Add each image from a vector<Mat> inputImages with weight 1.0/n where n is number of images to merge
for (Mat mat : inputImages) {
    Core.addWeighted(mergedImage, 1, mat, 1.0/n, 0, mergedImage);
}
Run Code Online (Sandbox Code Playgroud)

编辑:- 上面的代码存在舍入错误。如果 inputImageType 是整数类型,除以1/n会导致此问题。因此,上面的代码应该只用于浮动矩阵。