OpenCV复制到Mat没有透明像素

我有两个透明背景的图像。 我需要将这两个图像与具有白色背景的新OpenCV垫子上的特定坐标放在一起 (在下面的例子中out Mat)。

这是我目前的OpenCV代码:

Mat out = new Mat(mat.size(), CvType.CV_8UC4);

out.setTo(new Scalar(255));

Mat rotatedMat = Imgcodecs.imread(partOfRotatedImageFile.getAbsolutePath(), Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);
Rect roi = new Rect((int) (rect.center.x - rotatedMat.width() / 2), (int) (rect.center.y - rotatedMat.height() / 2), rotatedMat.width(), rotatedMat.height());
Mat outPart = null;
try {
     outPart = out.submat(roi);
} catch (Exception e) {
     System.err.println(e.getMessage());
     continue;
}
rotatedMat.copyTo(outPart);

如果图像彼此重叠 - 其中一个用透明像素替换另一个图像(之前放置的图像)。

例如:

在这里输入图像描述

抱歉图像质量不好,但正如您可能会看到带有Alpha通道的左侧图像(用绿色矩形呈现)与Alpha通道右侧的两个图像重叠。

是否有可能更新此代码以将源Mat对象的所有内容复制到除透明像素之外的生成的Mat对象?

链接地址: http://www.djcxy.com/p/89821.html

上一篇: OpenCV copy to Mat without transparent pixels

下一篇: Show Vec3b pixel values in OpenCV Mat image