我已经制作了剪切图像的功能,我剪下的部分有黑色背景。我正在尝试使黑色部分透明,然后我可以生成an image sequence that I can create a video with。我尝试将图像转换为double,然后用NaN替换0值:
J = imread('imgExample.jpg');
J2 = im2double(J);
J2(J2 == 0) = NaN;
imwrite(J2, 'newImg.jpg');
但是当我将其转换为视频时,它似乎并不存在。有没有办法让图像的黑色部分透明?
答案 0 :(得分:1)
根据评论中的说明,您正尝试使用matlab创建支持Alpha透明度的视频格式。
一般来说,单独使用matlab似乎是不可能的(至少在matlab 2013中是我使用的版本)。如果您想检查最新的matlab是否支持具有Alpha透明度的视频,请键入doc videowriter
并查看可用格式。如果您在那里看到任何带有透明度选项的内容,请从那里开始。但我看到的最多的是24位RGB视频(即三个频道,没有透明度)。
因此,matlab无法生成具有Alpha透明度的原生.avi视频。
然而,请注意,这是一种非常罕见的视频格式,即使您 设法制作了这样的视频,您仍然需要找到一个合适的观看者来支持播放具有透明度的视频!
因此,告诉我们您的特定用例非常重要,因为您可能正在尝试做一些更简单的事情(可能通过matlab解决也可能无法解决)(即XY Problem 的情况E.g。您可能正在尝试为网络创建一个透明的视频,例如此处https://developers.google.com/web/updates/2013/07/Alpha-transparency-in-Chrome-video
如果是这种情况,那么我建议您尝试在那里概述的方法;你可以创建单独的.png"框架"使用imwrite
函数在matlab中具有透明度。看看它的文档,特别是关于png图像和' Alpha'属性。但除此之外,你需要一个外部工具将它们组合成一个.webm文件,因为matlab似乎没有这样的工具(至少没有一个我能一目了然地看到;有可能如果你在网上看,可以成为第三方工具包。
希望这有帮助。