在OpenCV中使颜色完全透明

我有一个基本的png文件,里面有两种颜色,绿色和洋红色。 我要做的是拍摄所有洋红色像素并使它们透明,以便我可以将图像合并到另一个图像中。

例如,如果我在洋红色背景上有2D角色的图像文件。 我会删除背景中的所有洋红色,使其透明。 从那里我只需要拍摄角色的图像并将其作为一个图层添加到另一个图像中,这样就可以将角色放置在一个环境中。

提前致谢。

那是我要用的代码,

首先,加载你的图像:

IplImage *myImage; myImage = cvLoadImage("/path/of/your/image.jpg"); 

然后使用这样的掩码来选择颜色,你应该参考文档。 在下面,我想选择一个蓝色(不要忘记在OpenCV图像中是BGR格式,因此125,0,0是蓝色(它对应于下限)而255,127,127是蓝色,具有一定的容差和是上限。我选择下限和上限以容差来拍摄你所有的蓝色图像,但你可以选择你想要的任何东西……

 cvInRangeS(image, cvScalar(125.0, 0.0, 0.0), cvScalar(255.0, 127.0, 127.0), mask ); 

现在我们选择了掩码,让我们反过来(因为我们不想保留掩码,但要删除它)

 cvNot(mask, mask); 

然后用面具复制你的图像,

 IplImage *myImageWithTransparency; //You may need to initialize it before cvCopy(myImage,myImageWithTransparency,mask); 

希望它可以帮助,

有关详细信息,请参阅OpenCVDocumentation

这里是

朱利安,

这本身就是一个完整的主题,有许多解决方案。 我先读这个:

http://en.wikipedia.org/wiki/Transparency_(graphic)

然后看看这些方法如何在OpenCV中应用。