MATLAB學習之gif圖片讀取顯示

qq_43646149發表於2020-10-23

MATLAB之gif圖片讀取顯示

g1
用MATLAB讀取此圖片,由於是動態圖片,就無法用簡單地imread()和imshow()兩個函式進行讀取顯示。因此要用for迴圈進行逐幀讀取顯示。

程式碼如下

%gif影像的特殊處理
% imfinfo獲取圖片詳細資訊
info = imfinfo('g1.gif');

len = length(info);
for i = 1 : len

    % 逐幀讀取
    [Ii, map] = imread('g1.gif', 'frames', i);
    F(:, i) = im2frame(Ii, map);
end
implay(F)

函式解釋

1、info = imfinfo(‘g1.gif’);

imfinfo()函式:獲取圖片的資訊

呼叫方式

info = imfinfo(filename,fmt);
info = imfinfo(filename);

該函式把點陣圖的相關資訊(點陣圖檔案頭和點陣圖資訊頭資訊)讀入一個結構體變數中。該結構體各個成員:
  Filename:檔名
  FileModDate: 檔案最後修改日期
  FileSize: 檔案總大小(位元組)
  Format: 檔案格式('bmp’表示點陣圖檔案,更多格式請參考matlab的幫助文件
  FormatVersion: ‘Version 3 (Microsoft Windows 3.x)’
  Width: 影像寬度(畫素)
  Height: 影像高度(畫素)
  BitDepth: 影像灰度(24表示真彩色、8表示256色點陣圖)
  ColorType: ‘indexed’
  FormatSignature: ‘BM’
  NumColormapEntries: 顏色表中顏色項數
  Colormap: [256x3 double]
  RedMask: []
  GreenMask: []
  BlueMask: []
  ImageDataOffset: 影像資料區的偏移量
  BitmapHeaderSize: 影像檔案頭大小(固定為40位元組)
  NumPlanes: 1
  CompressionType: 影像是否壓縮
  BitmapSize: 120000
  HorzResolution: 0
  VertResolution: 0
  NumColorsUsed: 使用到的顏色數(對索引點陣圖,該值表示顏色表中顏色項數,對真彩色點陣圖,該值表示影像中實際用到的顏色數)
  NumImportantColors: 重要顏色數

2、[Ii, map] = imread(‘g1.gif’, ‘frames’, i);

imread()函式:讀取圖片

有關內容可參考
https://blog.csdn.net/langb2014/article/details/48465795/

3、F(:, i) = im2frame(Ii, map);

im2frame():將影像轉換為電影幀

1)呼叫方式

F = im2frame(X,map);
F = im2frame(X);

2)功能

f = im2frame(X)
  如果將X指定為m乘n的整數陣列,則im2frame使用關聯的顏色圖map,其中map是[0,1]範圍內的三列值陣列。 對映的每一行都是一個三元素的RGB三元組,它指定了顏色圖的單一顏色的紅色,綠色和藍色分量。
  如果將X指定為m×n×3真彩色影像,則map是可選的,並且無效。
f = im2frame(X)
  如果X包含索引影像,則使用當前顏色圖將索引影像X轉換為電影幀f。

本人小白,請各位大佬善待。

相關文章