我使用以下代码查看以下图片。
(如果看不到图像,请右键单击上面的空格并保存图像..) 图像是32位。 OpenCV显示白色图像。它是一个白色箭头图像,周围有alpha值。
Mat img = imread("FordwardIcon.png", CV_LOAD_IMAGE_UNCHANGED | CV_LOAD_IMAGE_ANYDEPTH);
cout << img.depth() << "\t" << img.channels() << endl;
imshow("img", img);
waitKey(0);
请告诉我如何正确加载图片
答案 0 :(得分:3)
没有恐惧,你的图像加载正确。
问题更多的是你期望imshow()尊重alpha通道(它没有)。
答案 1 :(得分:2)
目前,Opencv(3.0)似乎无法加载具有透明度的png图像(又名&#34; alpha通道&#34;)。要使用cv::imread()
加载这类图像,您需要先删除透明度通道,然后将其替换为某种颜色。
使用Imagemagick工具,可以使用Linux轻松完成。例如:
convert input.png -background '#00ff00' -flatten result.png
您可以使用file
工具检查图片是否包含图片。在您提供的图片上:
>$ file input.png
给出:
input.png: PNG image data, 52 x 32, 8-bit gray+alpha, non-interlaced
,而
>$ file result.png
给出
result.png: PNG image data, 52 x 32, 8-bit colormap, non-interlaced