我有一个 3 通道 IplImage。我想创建一个 4 通道图像并将其 Alpha 通道设置为小于 1.0 的值以使其半透明。
首先,我将 alpha 通道(第 4 个通道)设置为 0.5:
cvSet(Image_c4, cvScalar(0,0,0,0.5);
这是我用来将 3 通道图像复制到 4 通道图像的命令。
cvCvtColor(Image_c3, Image_c4, CV_RGB2RGBA);
问题:Image_c3 是彩色的。 Image_c4 成为 Image_c3 的灰度副本(并且没有透明度)。
Update:
事实证明,上面的代码实际上是正确的并且有效,并且实际上比下面答案中建议的解决方案更简洁。我在其他地方遇到了一个不相关的错误。
也许还有另一种方法,但我添加了这样的透明度:
// BGR split
cvSplit(im1_bgr, im1_b, im1_g, im1_r, NULL);
// Alpha channel creation (transparency)
IplImage *im1_a = cvCreateImage(cvGetSize(im1_bgr), 8, 1);
// Set the alpha value
cvSet(im1_a, cvScalar(128), NULL);
// Merge the 4 channel to an BGRA image
IplImage *im1_bgra = cvCreateImage(cvGetSize(im1_bgr), 8, 4);
cvMerge(im1_b, im1_g, im1_r, im1_a, im1_bgra);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)