OpenCV复制到Mat没有透明像素

时间:2018-03-02 15:59:19

标签: opencv

我有两张透明背景图片。我需要将具有特定坐标的这两个图像放在新的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对象(透明像素除外)?

0 个答案:

没有答案