我有两张透明背景图片。我需要将具有特定坐标的这两个图像放在新的OpenCV Mat 白色背景(下例中的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);
Mat)上。
这是我目前的OpenCV代码:
const summaryAggFields = ['f1', 'f2', 'f3', 'f4'];
const summaryAggFieldMap = lodash.map(summaryAggFields, f => {field: f, aggregate: 'sum'});
如果图像彼此重叠 - 其中一个图像用透明像素替换另一个图像(之前放置的图像)。
例如:
widely incompatible across shells
很抱歉图像质量不佳,但正如您可能会看到带有Alpha通道的左图像(以绿色矩形显示)与Alpha通道重叠右侧两个图像。
是否可以更新此代码以将所有内容从Mat Mat对象复制到生成的Mat对象(透明像素除外)?