我正在尝试加载透明图像。它似乎在代码的第一部分工作正常,但后来失败了。这是代码
for l = 1:4
color = he;
color(something ~= l) = 0;
A = ((color(:,:,1)));
A( all(color == 0, 3 ) ) = 1;
file = strcat(file{k}, '.png');
segmented_images{k} = color;
transparency{k} = A;
chk = segmented_images{k};
f = imshow(chk);
set(f, 'AlphaData', transparency{k});
figure, imshow(chk), title("Working Fine");
end
这里的图像看起来是透明的。 如果我在循环外测试它:
my_alpha = transparency{1};
chk2 = segmented_images{1};
f = imagesc(chk2);
set(f, 'AlphaData', transparency{1});
figure, imshow(chk2),title('transparent Final');
imwrite(chk2, 'G:\path.png');
我在透明区域看到黑色。如果我这样做:
imwrite(chk2, 'G:\wamp\www\final_check.png', "Alpha", my_alpha);
我可以保存透明图像。我是这个颜色处理的新手,所以请原谅我,如果我犯了一个非常愚蠢的错误。谢谢
修改的
在循环内部图像打印两次,第一次是透明的,第二次是黑色背景。我似乎没有以正确的方式显示图像。此外,“工作正常”标题附在黑色背景图像上,而不是另一个。
EDIT2:
真正的问题是带有Alpha通道的图像是颠倒的。
我得到的结果是:
这是代码:
figure
hold on
h1 = image(segmented_images{1});
set(h1, 'AlphaData', transparency{1});
h2 = image(last_image);
set(h2, 'AlphaData', transparency{2});
h3 = image(segmented_images{3});
set(h3, 'AlphaData', transparency{3});
h4 = image(segmented_images{4});
set(h4, 'AlphaData', transparency{4});
hold off;
这里有两个问题:一个是图像较小且颠倒。我是否正确覆盖它。我再次怀疑这是我无法找到的愚蠢错误。任何帮助将不胜感激。
更新:
当我改变
h1 = image(segmented_images {1});
要
h1 = imshow(segmented_images{1});
我得到了理想的结果。有人可以解释如何获得处理程序是不同的?我想我需要通过文档。
答案 0 :(得分:0)
要更改y方向使用:
set ( axesHandle, 'YDir', 'reverse' )