繁体   English   中英

OpenCV C ++中的透明像素(使用GrabCut时)

[英]Transparent pixels in OpenCV C++ (when using GrabCut)

我正在使用OpenCV的GrabCut实现来从图像中删除背景。 但是目前,新背景是黑色的。 有什么方法可以使其透明吗? 现在,这部分代码如下所示:

Mat binMask( image.size(), CV_8UC1 );
binMask = mask & 1;
image.copyTo( result, binMask );

我能以某种方式用透明像素填充binMask吗? 我已经阅读了一些有关叠加图像的教程,但是我不需要在图片的前面而是后面的透明图像。 我希望有人可以帮忙。 非常感谢!

由于您使用的是8UC1图像类型,因此不可能有透明像素。 仅当您有一个Alpha通道并将Alpha设置为0时,才允许使用这些通道:您必须使用4通道图像(3个用于颜色,1个用于Alpha通道)。 文件格式(例如PNG)支持alpha通道,但JPG不支持。

在进行遮罩的情况下,不需要使用透明像素,因为黑色像素实际上对应于0,并且当您混合两个图像时(例如addWeighted或in按位或运算的情况)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM