显示GIF图像Matlab

297(30天)
Rooy
Rooy 2012年4月21日
编辑: 为副总经理 2023年4月9日
我试着使用这个代码
[X,地图]= imread (“electricity.gif”);
imshow (X,地图)
我也尝试看在线帮助,但它不能解决我的问题。
谢谢你!
6个评论
图像分析
图像分析 2021年2月6日
@Maram Abd , 向下滚动 看到“答案”。这些仅仅是“ 评论 “这里通常是用来问海报澄清问题和/或附加缺失数据或代码。 史蒂夫的图像处理的博客 在博文下面还讨论了GIF图像

登录置评。

接受的答案

图像分析
图像分析 2012年4月21日
这将会扮演一个GIF但不是colormap或在某些轴控制您所指定的处理——这带来了电影播放器:
fullFileName =用户“C: \ \扎克\ \ gif图片\ AnimatedGifs \ electricity.gif ';
[gifImage提出]= imread (fullFileName“帧”,“所有”);
大小(gifImage)
implay (gifImage);
5个评论
为副总经理
为副总经理 2023年4月9日
编辑:为副总经理 2023年4月9日
第一个例子是不正确的 任何 GIF。灰色或彩色,没有理由假定任何给定的颜色表在一个线性序列是有序的强度。因此,没有理由假设索引数组应该呈现为灰度图像。
(inpict CT) = imread (“lenagrayunordered.gif”);
imshow (inpict)%索引数组不是一个强度图像
imshow (inpict CT)%使用CT
第二个例子只适用于多帧gif 所有的帧 共享相同的colortable作为第一帧的CT计算(即GCT或LCT1)。GIF说,这是一种罕见的情况,你有一个彩色图像序列没有lct中定义的文件。顺便可以读取该文件在这个实例中,CT的第一帧,没有人会知道这个过程可能失败与大多数其他图像。
考虑下面的图像。如果我们读它上面,你会在右边。这根本不是正确的。
怎么看图片吗?读取索引数据,然后从imfinfo读取剩余的数据()。如果没有需要转换图像和存储一个RGB复制,然后不要。如果有,那就不要那样显示的循环。
%这是结合图像包括在内
fullFileName =“CB2.gif”;
%我不会打扰阅读CT1这里
gifImage = imread (fullFileName,“帧”,“所有”);
%得到的所有colortables imfinfo ()
S = imfinfo (fullFileName);
numImages =元素个数(年代);
%设置图与一个空白的形象
你好= imshow(0(大小(gifImage (:,:, 1, 1))));
嗨。CDataMapping =“直接”;
k = 1: numImages
%更新对象需要更少的时间
%,因此帧延迟更准确
嗨。CData = gifImage (:,:,:, k);
colormap (S (k) .ColorTable)
标题= sprintf (% # % d d帧的k numImages);
标题(标题);
drawnow;
%使用指定的帧延迟
暂停(S (k) .DelayTime / 100)
结束
这是通常直截了当的回答,但有两个并发症,防止它被直接使用。首先, R2018b引入一个错误 在imread(),使它无法读过很多多帧gif 正确 没有修改文件供私人使用。我抱怨关于足以知道没人会在乎。
如果我们解决读取文件错误,我们还是把这个垃圾从imread ()。第二个问题是,鉴于GIF尤其是大量优化。Imread () 从来没有 被正确擅长阅读优化gif。在这种情况下,它的处理不当透明区域在特定的框架取决于他们的处理方法。
然而,如果我们结合外部的图片,它可以读得很好。
虽然不是这张照片的问题,合并通常是有损的过程如果我们被迫呆在8位索引颜色的格式。虽然这是一个限制任何外部工具,重写数据合并到新的GIF, imread()有机会真彩RGB或更广泛的索引格式输出,而只是不存在。
如果我想读,GIF,我会怎么做?尽可能的因readgif的bug。米,至少MIMT gifread()是易于使用。
inpict = gifread (“彩色balls.gif”,“合并”);% 4 d RGB输出
在这一点上,inpict 4 d RGB图像,如果你想等待implay()加载,您可以使用它。

登录置评。

更多的答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2012年4月21日
编辑:沃尔特·罗伯森 2017年2月6日
GIF的球员 从文件交换
3评论
为副总经理
为副总经理 2022年5月4日
编辑:为副总经理 2022年5月4日
就其价值而言,错误是一个错误的内部readgif(),由imread内部使用()。至少R2019b, current_frame应该索引图像在这个测试(如果我没记错的话),然后transparent_color应该是一个标量中定义的文件/帧头。
我不知道为什么readgif()在这一个案例中,没有人需要解决了。文件不是最常见的一种安排。可能有GIF功能imread()不支持,只是一些事情万博1manbetx 不能 万博1manbetx支持在一个理想的方式由于约定在MATLAB图像处理。所以不要惊讶如果readgif()减免或返回垃圾。
不论真假,文件可以使用“donotspecify”处理,而不是重新保存leaveinplace,读好,看起来一样。

登录置评。


Rooy
Rooy 2012年4月21日
它看起来像我一样只会让窗户打开文件从Matlab。非常感谢你所有的帮助。
2的评论
Rooy
Rooy 2012年4月21日
我将使用winopen然后使用windows默认程序文件会打开。

登录置评。

类别

找到更多的在历史竞赛帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!