Raw*_*ean 3 opencv alpha-transparency
我有一个3通道的IplImage.我想创建一个4通道图像,并将其alpha通道设置为小于1.0的值,使其半透明.
首先,我将alpha通道(第4个通道)设置为0.5:
cvSet(Image_c4, cvScalar(0,0,0,0.5);
Run Code Online (Sandbox Code Playgroud)
这是我用于将3通道图像复制到4通道图像的命令.
cvCvtColor(Image_c3, Image_c4, CV_RGB2RGBA);
Run Code Online (Sandbox Code Playgroud)
问题:Image_c3是彩色的.Image_c4成为Image_c3的灰度副本(并且没有透明度).
更新:事实证明,上面的代码实际上是正确的,并且实际上比下面的答案中的建议解决方案更简洁.我在其他地方有一个无关的bug.
也许有另一种方式,但我添加这样的透明度:
// 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);
Run Code Online (Sandbox Code Playgroud)