我有一个基本的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获取更多信息
在这里
朱利安,