我有两个图像源和背景,并使用Alpha蒙版使用opencv无缝克隆将源图像的一部分混合到背景图像中,并删除了源和背景中的Alpha通道,并将蒙版转换为灰度(白色和黑色)。但是无缝克隆功能会引发错误,如下所示。
E / org.opencv.photo:照片:: seamlessClone_10()捕获了std :: exception:vector :: _ M_fill_insert
我使用java中的opencv'mattopbitmap'函数将所有位图转换为mat。源和背景的大小均为513 * 513,掩码为200 * 200(在android中使用opencv 3.4.1)
Imgproc.resize(mskmat, mskmat, new Size(200, 200));
Imgproc.resize(bgmat, bgmat, new Size(513, 513));
Imgproc.resize(imat, imat, new Size(513, 513));
Imgproc.cvtColor(bgmat, bgmat, Imgproc.COLOR_BGRA2BGR);
Imgproc.cvtColor(imat, imat, Imgproc.COLOR_BGRA2BGR);
Imgproc.cvtColor(mskmat, mskmat, Imgproc.COLOR_BGRA2GRAY);
Mat result = new Mat();
Photo.seamlessClone(imat, bgmat, mskmat, new org.opencv.core.Point(257, 257), result, Photo.NORMAL_CLONE);