C++ 图像显示时更改形状

C++ 图像显示时更改形状,c++,image,opencv,image-processing,computer-vision,C++,Image,Opencv,Image Processing,Computer Vision,我正在尝试显示此图像,因为我的目录中有此图像 但是我用这个代码显示它 Mat img=imread("D:\\vig.png"); imshow("image",img); waitKey(); imwrite("D:\\img.jpg",img); 相同的图像显示如下 它有什么问题您的渐晕图仅在alpha[4th]通道中,而且看起来是反转的(此处的不透明度值) (您的第一张图片似乎显示了一个带有白色图像(或背景)的适当alpha合成,这可能是来自photoshop或类似软件。) 再次请

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

但是我用这个代码显示它

Mat img=imread("D:\\vig.png");
imshow("image",img);
waitKey();
imwrite("D:\\img.jpg",img);
相同的图像显示如下


它有什么问题

您的渐晕图仅在alpha[4th]通道中,而且看起来是反转的(此处的不透明度值)

(您的第一张图片似乎显示了一个带有白色图像(或背景)的适当alpha合成,这可能是来自photoshop或类似软件。)


再次请注意,opencv不会进行任何alpha合成,您必须为此滚动您自己的公式。

如果图像有alpha通道,您可能需要尝试
Mat img=imread(“D:\\vig.png”,-1)
trued,无效,这张图片实际上从内部看起来是中空的,因为我的图片来自photoshop,但opencv并没有像我上面的图片那样制作,因为上面的图片就像另一只苍蝇的生活中的中空一样,顺便说一句?;)啊,我只是在这里改了个名字,贝拉克
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);