imshow和image:
图像的显示是最为重要的,用imshow和image都可以显示图像,但是有一定的区别。用的不对,就会象我最初一样,老是出错,或者得到一张空白图或者是彩色图显示成颗粒状、反相黑白图等等。image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小。imshow只是显示图像。
它们都可以用subplot来定位图像显示的位置,用colormap来定义图像显示用的颜色查找表,比如用colormap(pink),可以把黑白图像显示成带粉红色的图像,很有趣的。
Matlab读取avi文件,并转换为灰度图:
1.用matlab读取avi电影(只能读一定压缩各式的avi电影)
mov=aviread('highwayI_raw.A VI'); %读入电影highwayI_raw.A VI
movie(mov); %放映电影
2.将电影转成图片序列
aviread(filename, index); % 读取avi文件的第index帧图像;
例:mov = aviread('highwayI_raw.A VI',1) %读取第一帧图像
读取图像以后储存的格式是一个结构体,该结构体有两个元素:cdata和colormap
例:frame = aviread('highwayI_raw.A VI', i);
frame.cdata表示了一个数据数组,彩色图像就是3维的,灰度图像就是2维的。
frame.colormap 见(help aviread)
3.然后就是将彩色图像转换为灰度图像,很简单:
frame = aviread('highwayI_raw.A VI', i);
f_gray = rgb2gray(frame.cdata);
这样就可以将文件的第i帧转换为灰度图像。
imwrite的用法:
imwrite(recover_image, 'recover.jpg', 'jpg');
colormap
定义图像显示用的颜色查找表,比如用colormap(pink),可以把黑白图像显示成带粉红色的图像,很有趣的。
avi格式视频的读取和显示(Matlab代码)
clear data
disp('input video'); % 显示"input video"
avi = aviread('samplevideo.avi'); % avi: MATLAB movie structure
video = {avi.cdata}; % cdata: M x N x 3 的矩阵用来表示真彩色的图像
for a = 1:length(video) % length(video)表示这段视频的帧数imshow(video{a}) %按帧数顺序显示图像