图像在显示时改变形状

AHF*_*AHF 2 c++ opencv image image-processing computer-vision

我正在尝试显示此图像,因为我在我的目录中有此图像

在此输入图像描述

但我用这段代码显示它

Mat img=imread("D:\\vig.png");
imshow("image",img);
waitKey();
imwrite("D:\\img.jpg",img);
Run Code Online (Sandbox Code Playgroud)

相同的图像显示如下

在此输入图像描述

它出什么问题了

ber*_*rak 7

您的晕影仅在alpha [4th]通道中,并且它看起来也是反转的(此处为不透明度值).

(你的第一张照片似乎显示了一个带有白色图像(或背景)的正确alpha合成,可能来自photoshop等.)

Mat img=imread("vig.png",-1); // load 'as is', don't convert to bgr !!
Mat ch[4]; 
split(img,ch);

Mat im2 = ch[3];              // here's the vignette

// im2 = 255 - im2;           // eventually cure the inversion

imshow("image",im2);
waitKey();
imwrite("img.jpg",im2);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

再次注意,opencv不会进行任何alpha合成,你必须为此推出自己的公式.