提供文本信息,如何用matlab 生成bin文件生成图片? matlab 生成bin文件如何实现文本转图?

MATLAB与图像处理(四):将图片序列转化为视频文件,将视频文件转化为图片 - 推酷
MATLAB与图像处理(四):将图片序列转化为视频文件,将视频文件转化为图片
一,将图片序列转化为视频文件
function video=frames2Video(framesPath,videoName,quality,Compressed,fps,startFrame,endFrame)
%framesPath :图像序列所在路径,同时要保证图像大小相同
%videoName:
表示将要创建的视频文件的名字
生成视频的质量 0-100
%Compressed: 压缩类型, 'Indeo3'(默认), 'Indeo5', 'Cinepak', 'MSVC', 'RLE' or 'None'
%fps: 帧率
%startFrame ,endF表示从哪一帧开始,哪一帧结束
if(exist('videoName','file'))
delete videoName.avi
%生成视频的参数设定
aviobj=avifile(videoName);
%创建一个avi视频文件对象,开始时其为空
aviobj.Quality=
aviobj.Fps=
pression=C
for i=startFrame:endFrame
fileName=sprintf('%08d',i);
%根据文件名而定 我这里文件名是.jpg .jpg ....
frames=imread([framesPath,fileName,'.jpg']);
aviobj=addframe(aviobj,uint8(frames));
aviobj=close(aviobj); % 关闭创建视频
在command window里输入
path='你的文件路径';
frames2Video(path,'dog',90,'None',5,1,32);
二,视频文件转化为图片
function avi2Frames(path)
mov=aviread(path);
framesNum=size(mov,2);
for i=1:framesNum
frames=frame2im(mov(i));
str=strcat('a',int2str(i),'.jpg');
imwrite(frames,str);
代码未做优化,可以先预分配空间
同时对于很多使用程序健壮的语句没有加进去
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致博客访问: 456989
博文数量: 94
博客积分: 5772
博客等级: 大校
技术积分: 1275
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: WINDOWS
plot(t*1e+9,abs(iGG)/max(abs(iGG)),'k','linewidth',2);
axis([-5,5,0,1])
xlabel('时间/ns');
ylabel('幅度/a.u.');
set(get(gca,'title'),'FontSize',10,'FontName','宋体');%设置标题字体大小,字型
set(get(gca,'XLabel'),'FontSize',10,'FontName','Times New Roman');%设置X坐标标题字体大小,字型
set(get(gca,'YLabel'),'FontSize',10,'FontName','Times New Roman');%设置Y坐标标题字体大小,字型
set(gca,'FontName','Times New Roman','FontSize',10)%设置坐标轴字体大小,字型
text(0.3,1.2,'(a)','FontSize',10,'FontName','Times New Roman'); %设置文本字型字号
set(gca, 'XTick', [0 10 20 30 40 50 60 70 80 90]) %设置X坐标轴刻度数据点位置
set(gca,'XTickLabel',{'0','10','20','30','40','50','60','70','80','90'}) %设置X坐标轴刻度处显示的字符
set(gca, 'YTick', [-15 -10 -5 0 5 10 15]) %设置X坐标轴刻度数据点位置
set(gca,'YTickLabel',{'-15','-10','-5','0','5','10','15'}) %设置Y坐标轴刻度处显示的字符
axis([0,90,-20,20])
set(gca,'YTickLabel',[]); %只显示y坐标轴刻度,不显示y坐标轴的值;
set(gca,'XTickLabel',[]); %只显示x坐标轴刻度,不显示x坐标轴的值;
set(gca,'ytick',[]); %y轴的坐标值和刻度均不显示;
set(gca,'xtick',[]); %x轴的坐标值和刻度均不显示;
set (gcf,'Position',[400,300,600,200]); %设定plot输出图片的尺寸。参数含义为:xmin,ymin,width,height
%plot的默认参数为[232,246,560,420],Position的单位可以用units属性制定,units属性的值可以是下列字符串中的任何一
%种:pixel(像素,缺省值)、normalized(相对单位)、inches(英寸)、centimeters(厘米)、points(磅)。
%指定大小后,在figure中用text输出的文字大小,设置的是多大,在WORD中显示的就是多大。
set (gcf,'units','centimeters','Position',[4,3,6,2]); %指定fiugre的尺寸为6cm宽,2cm高。
%也可以直接用下属语句:
fiure('units','centimeters','Position',[4,3,6,2]);
%改变ylabel离坐标轴的距离
hc=findobj(allchild(gcf), 'Type', 'axes');
hc2=findobj(allchild(hc), 'Type', 'text');
set(hc2(3), 'Position', [0 0 0]);
%改变xlabel离坐标轴的距离
hc=findobj(allchild(gcf), 'Type', 'axes');
hc2=findobj(allchild(hc), 'Type', 'text');
set(hc2(4), 'Position', [0 0 0]);
%双y轴坐标图形调整
[AX,H1,H2]=plotyy(f*1e-12,abs(T1.*T1),f*1e-12,angle(T1.*T1));
set(AX,'FontSize',14,'FontName','Times New Roman')%设置x轴、左y轴、右y轴刻度字号和字型
set(AX(1),'Xcolor','k','Ycolor','k')%设置x轴、左y轴刻度字体为黑色;
set(AX(2),'Xcolor','k','Ycolor','k')%设置x轴、右y轴刻度字体为黑色;
set(AX,'Xlim',[207.5 217.1],'xtick',[208:1:217])%设置x轴数据范围(207.5到217.1),刻度显示(208,209,210...217)
set(AX(1),'ylim',[0,0.5],'ytick',[0:0.1:0.5])%设置左y轴数据范围(0到0.5),刻度显示(0,0.1,0.2...0.5)
set(AX(2),'ylim',[0,3],'ytick',[0:1:3])%设置右y轴数据范围(0到3),刻度显示(0,1,2,3)
set(H1,'Linestyle','-','color','r','Linewidth',2.5);%设置第一条曲线的线型、颜色、粗细
line(x,y,'linestyle','-','color','r','Linewidth',2.5,'parent',AX(1));%在第一条曲线上再画一条曲线。
set(H2,'Linestyle','-.','color','b','Linewidth',2.5);%设置第二条曲线的线型、颜色、粗细
set(get(AX(1),'Ylabel'),'string','Amplitude(a.u.)','FontSize',10,'FontName','Times New Roman','Position',[0 0 0 ]);%设置左y轴标题字号字型
set(get(AX(2),'Ylabel'),'string','Phase(rad)','FontSize',10,'FontName','Times New Roman');%设置右y轴标题字号字型
set(get(AX(1),'Xlabel'),'string','Optical frequency(THz)','FontSize',10,'FontName','Times New Roman');%设置x坐标标题字体大小,字型
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
AX = plotyy(x,y1,x,y2,'plot');
line(x,.5*y1,'linestyle','--','parent',AX(1)) %在第一条曲线上画曲线。
%求极大值的位置:
find(diff(sign(diff(data)))==-2)+1;
%求极小值的位置
find(diff(sign(diff(data)))==2)+1;
sita=0:pi/20:2*pi;
plot(x0+a*cos(sita+fi),y0+b*sin(sita+fi),'linewidth',1.5);%fi为方位角,x0,y0为中心点坐标,a/b为长短轴;
annotation('arrow',[0.535 0.62],[0.72 0.72],'LineStyle','-','Linewidth',1.5,'color',[0 0 1])%,'HeadStyle','cback3');
%箭头起始点(0.535,0.72),箭头结束点(0.62,0.72),坐标值为figure的归一化坐标。
阅读(16975) | 评论(1) | 转发(2) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。如何用MATLAB实现序列图片转换成AVI?
如何用MATLAB实现序列图片转换成AVI?
09-12-26 &
还是那个牛人写的。function produceavifrompic(pfrom,pto,pext,navi)aviobj = avifile(navi);aviobj.Quality = 100;pression='None';cola=0:1/255:1;cola=[cola];%%黑白图像cola=cola';aviobj.colormap=for i=pfrom:pto         fname=strcat(num2str(i),pext)        adata=imread(fname);    aviobj = addframe(aviobj,uint8(adata));endaviobj=close(aviobj);   以上是将一系列8位黑白图像转化成avi格式电影,如果是彩色图像,则如下function produceavifrompic(pfrom,pto,pext,navi)aviobj = avifile(navi);aviobj.Quality = 100;pression='None';for i=pfrom:pto       fname=strcat(num2str(i),pext)       adata=imread(fname);    aviobj = addframe(aviobj,uint8(adata));endaviobj=close(aviobj); 参考资料:
请登录后再发表评论!
还是那个牛人写的。function produceavifrompic(pfrom,pto,pext,navi)aviobj = avifile(navi);aviobj.Quality = 100;aviobjpression='None';cola=0:1/255:1;cola=[cola];%%黑白图像cola=cola';aviobj.colormap=for i=pfrom:pto         fname=strcat(num2str(i),pext)        adata=imread(fname);    aviobj = addframe(aviobj,uint8(adata));endaviobj=close(aviobj);   以上是将一系列8位黑白图像转化成avi格式电影,如果是彩色图像,则如下function produceavifrompic(pfrom,pto,pext,navi)aviobj = avifile(navi);aviobj.Quality = 100;aviobjpression='None';for i=pfrom:pto       fname=strcat(num2str(i),pext)       adata=imread(fname);    aviobj = addframe(aviobj,uint8(adata));endaviobj=close(aviobj);
请登录后再发表评论!9331人阅读
MATLAB(12)
imMatrix = imread('name.jpg')%jpg也可以bmp,你的图片格式 MATLAB图像处理工具箱支持四种基本图像类型:索引图像、灰度图像、二进制图像和RGB图像。MATLAB直接从图像文件中读取的图像为RGB图像。它存储在三维数组中。这个三维数组有三个面,依次对应于红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色的强度值,面中的元素对应于图像中的像素点。设所得矩阵为X三维矩阵(256,256,3) ,X(:,:,1)代表红颜色的2维矩阵 X(:,:,2)代表绿颜色的2维矩阵,
X(:,:,3)代表兰颜色的2维矩阵。[X, map]=imread('34.bmp');r=double(X(:,:,1)); %r是256 x 256的红色信息矩阵g=double(X(:,:,2)); %g是256 x 256的绿色信息矩阵b=double(X(:,:,3)); %b是256 x 256的兰色信息矩阵
索引图像数据包括图像矩阵X与颜色图数组map,其中颜色图map是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵X包含一个值,这个值就是颜色图数组map中的索引。颜色图map为m×3双精度矩阵,各行分别指定红、绿、蓝(R、G、B)单色值,map=[RGB],R、G、B为值域为[0,1]的实数值,m为索引图像包含的像素个数。
对于相同的数据,采用uint8格式比双精度格式节省内存空间,从而更经济。在MATLAB中
如果索引图像的颜色图小于256行,则它的图像矩阵以uint8格式存储,否则以双精度格式存储。
一:imread:从图像文件夹中读取图像。
A = imread(FILENAME,FMT) 读取图像到A,如果文件是包含一灰度图像,A是一二维矩阵,如果文件是包含一真彩色图像(RGB),A是一三维矩阵(M-by-N-by-3)。FILENAME :图像文件名;FMT:图像文件格式;
文件必须在当前目录下,或在Matlab的一路径上。如果 imread不能够找到一名称为FILENAME的文件,那么它将找一名为FILENAME.FMT的文件
[X,MAP] = imread(FILENAME,FMT) 把图像FILENAME读入与它相关的图像色彩信息写入MAP,图像色彩信息值在范围[0,1]中自动地重新调整.
[...] = imread(FILENAME)这种方式是试图得到文件的格式从文件所包含的信息。
[...] = imread(URL,...)从一Internet URL上读图像 URL 必须包含协议(即: &http://&).
1.2数据类型:
TIFF的特殊语法:
[...] = imread(...,IDX) 从很多图像TIFF文件中读一个图像;IDX是一个整数值,它显示了所读图像在文件中的顺序,例如:如果 IDX是 3, imread将读文件中的第三个图像。 如果省略了这个变量, imread将读文件中的第一个图像.
IMREAD支持的图像文件格式:JPEG TIFF GIF BMP PNG HDF PCX XWD ICO CUR RAS PBM PGM PPM
相关信息也可在Matlab中查看: imfinfo, imwrite, imformats, fread,
二:imwrite输出图像
imwrite(A,FILENAME,FMT) 把图像 A 写入图像文件 FILENAME.
imwrite(X,MAP,FILENAME,FMT) 把 X和它的相关色彩信息MAP写入FILENAME.
imwrite(...,FILENAME) 把图像写入图像文件FILENAME,并推测可能的格式用来做filename的扩展名。扩展名必须是FMT中一合法名.
imwrite(...,PARAM1,VAL1,PARAM2,VAL2,...) 不同的参数控制输出文件的各种不同特征。参数要是当前所支持的HDF,JPEG, TIFF, PNG, PBM, PGM, 和PPM 文件
三:image 显示图像.image(C) 把矩阵 C 转成一图像. C 可以是一MxN 或 MxNx3维的矩阵,且可以是包含 double, uint8,或 uint16 数据.image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小。但可以加上axis off命令即可把坐标去掉。
imshow只是显示图像。用colormap来定义图像显示用的颜色查找表,比如用colormap(pink),可以把黑白图像显示成带粉红色的图像。
图像像素矩阵的数据类型:(1)显示真彩色图像像素三维矩阵X,如果是uint8类型,要求矩阵的数据范围为0-255,(2)如果是double型,则其数据范围为0-1,要不就会出错或者出现空白页。
类型转换:(1)如果你原来的数值是uint8,在运算中转换为double后,实际要显示的数值没有改变的话,只要用uint8(X)就可转换为uint8型,如果不想转换频繁,也可在显示时用X/255来转换为符合0-1double类型范围要求的数值显示。(2)如果显示索引图像(二维矩阵),如果索引图像像素数值是double型,则它的取值范围为1-length(colormap),数值起点为1,则矩阵中数值为1的对应colormap中第一行数据,如果索引图像像素数值是uint8,则取值范围为0-255,数值起点为0,则矩阵中数值为0的对应colormap中第一行数据,所以索引图像这两个数据类型之间的转换,要考虑到+1或-1。直接用uint8或double转换则会查找移位,产生失真情况。uint16数据类型与uint8类似,取值范围为0-65536。
四:其它常用图像操作:
图像显示于屏幕有imshow( ), image( )函数;
图像进行裁剪imcrop( );
图像的插值缩放imresize( )函数实现;
旋转用 imrotate( )实现。
五:具体的操作
下面通过运用图像处理工具箱中的有关函数对下图(nice.bmp)进行一些变换。见后面的transfer.m内容!
变换前图片:(nice.bmp)
变换后所得图片:newpic.bmp
例,在电脑F\picture下有一彩色图像文件nice.bmp,则可由下述语句读取:
下面是对图像 nice.bmp以y轴为对称轴所做的一个对称变换。
% Transfer1.m
[x,map]=imread('F:\picture\nice.bmp');% 所得x为一375x420x3的矩阵
[w1,w2,w3]=size(x); % 375 X 420
w22=floor(w2/2);
image(x); %显示出图像
title('HELLO! @This is the first pose of me')%则显示出图像nice.bmp
% 去掉图像中的坐标
colormap(map); % colormap(),图像查找表函数。函数结构为colormap(map),设置当前的图像查找表到map。
imwrite(x,map,'nice.bmp')
for i=1:w1
for j=1:w22 % 图像关于y轴对折
x(i,j)=x(i,w2-j+1);
x(i,w2-j+1)=t;
title('HELLO!!@@ Can you find any difference of my two picture! ') colormap(map);
imwrite(x,map,'newpic.bmp') %把x写到nepic2.bmpz中去
% Transfer1.m文件中包含了最基本也是最常用的对读像处理的命令。
在对图像处理的整个过程中,实质上是对[x,map]=imread(‘figure')函数中所得x矩阵的各种变换!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:734058次
积分:8373
积分:8373
排名:第1503名
原创:145篇
转载:237篇
评论:89条
(1)(1)(21)(22)(33)(2)(24)(12)(37)(38)(55)(35)(27)(5)(33)(33)(3)

我要回帖

更多关于 matlab 生成bin文件 的文章

 

随机推荐