MATLAB第三章——一類陣列,圖片讀取及操作
阿新 • • 發佈:2018-12-09
第三章
元胞陣列
- MATLAB元胞陣列(cell)可以將浮點型、字元型、結構陣列等不同型別的資料放在同一個儲存單元中
[c,1]
cell中插入數字1cell2mat(c(2))
— cell型別轉換為矩陣
讀取圖片
%% 讀取圖片 clc, clear, close all a1=imread('000.bmp'); [m,n]=size(a1); %% 批量讀取圖片 dirname = 'ImageChips'; files = dir(fullfile(dirname, '*.bmp')); a=zeros(m,n,19); pic=[]; for ii = 1:length(files) filename = fullfile(dirname, files(ii).name); a(:,:,ii)=imread(filename); pic=[pic,a(:,:,ii)]; end double(pic); figure imshow(pic,[])
dir(xxx)
返回其中檔名或所有資料夾下所有檔名fullfile(a,b,c)
合成一個地址a\b\ca(:,:,1)
分塊的矩陣(其中的第一塊)imread('xxx.jpg');imshow(pic,[])
前者為讀取圖片畫素,後者為展示圖片- 原理在於將圖片變為矩陣,通過拼接ju’z矩陣來轉換為圖片。
批量行拼接圖片
function ConnectImages() %% 讀取圖片 clc, clear, close all %% 批量拼接圖片 files = dir('*.jpg');maxrows=0;maxlines=0; pic=[];rows=[];lines=[]; for ii = 1:length(files) filename = fullfile(files(ii).name); lite=imread(filename); [m,n]=size(lite); rows=[rows m];lines=[lines n]; end maxrows=max(rows); for ii = 1:length(files) filename = fullfile(files(ii).name); lite2=imread(filename); [m,n]=size(lite2); temp=[lite2 ]; final=[temp;255.*ones(maxrows-m,n/3,3)]; pic=[pic,final]; end figure imshow(pic,[]) end
批量行加密圖片
files = dir('*.jpg'); for ii = 1:length(files) filename = fullfile(files(ii).name); lite=imread(filename); [m,n]=size(lite); encry=zeros(m,n/3,3); key=randsample(m,m)'; for k=1;3 encry(:,:,k)=lite(key,:,k); end encry=uint8(encry); figure imshow(encry); end
雜項
- 右鍵表格檔案(xls)直接匯入資料,選擇列向量可以直接看到、選用內部子列
- 如果選擇匯出指令碼會看到匯入的具體程式碼,並加以修改、釋出
maxdrawdown()
計算最大回撤- 三維陣列中每一個size都要相等