我正在尝试使用OpenCV将两个图像叠加在一起。
输入1个背景(b.jpg):
输入2个前景(f.jpg):
所需的输出:
实际输出:
想法是将前景的圆形部分叠加到背景上。
我正在使用代码:
Mat background = imread("b.jpg");
Mat foreground = imread("f.jpg");
Mat mask{foreground.size(), foreground.type(), Scalar::all(0)};
circle(mask, Point{foreground.cols / 2, foreground.rows / 2}, foreground.cols / 2 - 10, Scalar::all(255), -1, CV_AA);
imwrite("mask.jpg", mask);
foreground.copyTo(background, mask);
imwrite("overlay.jpg", background);
对于遮罩本身,我可以看到边缘非常平滑的完美圆形绘制。
但是,一旦我使用圆形蒙版调用copyTo。生成的图像边缘陡峭,似乎抗锯齿部分完全消失了。
有没有办法复制副本来纪念抗锯齿的事实?还是有一种更简单的方法来实现相同的输出?