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