在OpenCV中使颜色完全透明

时间:2011-07-13 15:35:06

标签: c opencv image-manipulation

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

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

提前致谢。

2 个答案:

答案 0 :(得分:9)

这就是我要使用的代码,

首先,加载您的图片:

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

Here it is

于连

答案 1 :(得分:-2)

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

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

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