MATLAB第三章——一类数组,图片读取及操作

2019-04-15 17:09发布

第三章

元胞数组

  1. MATLAB元胞数组(cell)可以将浮点型、字符型、结构数组等不同类型的数据放在同一个存储单元中
  2. [c,1]cell中插入数字1 cell2mat(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,[])
  1. dir(xxx)返回其中文件名或所有文件夹下所有文件名
  2. fullfile(a,b,c)合成一个地址ac
  3. a(:,:,1)分块的矩阵(其中的第一块)
  4. imread('xxx.jpg');imshow(pic,[])前者为读取图片像素,后者为展示图片
  5. 原理在于将图片变为矩阵,通过拼接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都要相等