图像在显示时改变形状

时间:2014-05-09 10:23:36

标签: c++ image opencv image-processing computer-vision

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

enter image description here

但我用这段代码显示它

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

同一图像显示如下

enter image description here

它有什么问题

1 个答案:

答案 0 :(得分: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);

enter image description here

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