1
嗨,我有几个Mat
,我想重叠(以自定义顺序)。 Mat
holdes一些opencv多边形(这意味着很多透明度)。这Mat
我需要覆盖/合并。但与传统的阿尔法混合更像是100%不透明但具有透明度。OpenCv覆盖两个垫(图纸不是图像)与透明度
这是我想要合并的简单示例代码。
Mat m1, m2;
m1.create(Point{ 100,100 }, CV_8UC4);
m2.create(Point{ 100,100 }, CV_8UC4);
cv::polylines(m1, std::vector<Point>{ Point{ 2,20 },Point{ 20,40 } }, true, Scalar(6, 6, 255));
cv::polylines(m2, std::vector<Point>{Point{ 100,100 }, Point{ 0,0 } }, true, Scalar(192, 112, 0));
请注意,我不能在一个Mat
直接绘制多边形由于种种原因。
我想,也许m1.copyTo(m2);
会的工作,但其覆盖的一切(包括黑色背景)
不知道如何得到它合并了/没有背景重叠?我可以构造垫子的错吗?
创建要复制(我猜的一切,这不是黑色)件的面罩,然后用'copyTo'与面具。 –
@DanMašek你知道任何聪明的功能来检测黑色/黑色以外的所有东西吗?我试过cv :: threshold(m1,m1,1,255,cv :: THRESH_BINARY);'但是它的工作不太好。 – user1234
添加图纸的示例图像。 – Micka