Matlab透明PNG(倒置/较小图像)
我正在尝试加载一个透明图像。在代码的第一部分,它似乎工作得很好,但随后失败了。这是密码Matlab透明PNG(倒置/较小图像),matlab,image-processing,colors,alpha-transparency,Matlab,Image Processing,Colors,Alpha Transparency,我正在尝试加载一个透明图像。在代码的第一部分,它似乎工作得很好,但随后失败了。这是密码 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
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);
我能够保存一个透明的图像。我是一个新的颜色处理的事情,所以请原谅我,如果我犯了一个非常愚蠢的错误。多谢各位
编辑
内部循环图像打印两次,第一次为透明,第二次为黑色背景。似乎我没有以正确的方式显示图像。加上标题“工作良好”附在黑色背景图像上,而不是附在另一个图像上
编辑2:
真正的问题是带有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=图像(分割的_图像{1})
到
h1=imshow(分割的_图像{1})代码>
我得到了想要的结果。有人能解释一下,获得处理程序有什么不同吗?我想我需要浏览文档。要更改y方向,请使用:
set ( axesHandle, 'YDir', 'reverse' )
这并不能完全解决问题,因为图像不仅是颠倒的,而且质量低,而且更小。如果不了解更多关于实际图像的信息,很难回答这个问题。既然如此,您可以在调用image->时指定XData
和YData
属性,这样您就可以强制它们覆盖。