1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 利用MATLAB将图片转换成coe文件 TXT文件 mif文件 bin文件

利用MATLAB将图片转换成coe文件 TXT文件 mif文件 bin文件

时间:2023-01-03 04:49:00

相关推荐

利用MATLAB将图片转换成coe文件 TXT文件 mif文件 bin文件

利用MATLAB将图片转换成coe文件、TXT文件、mif文件

利用MATLAB将图片转换成coe文件利用MATLAB将图片转换成txt文件利用MATLAB将图片转换成mif文件利用MATLAB将图片转换成bin文件‘总结

利用MATLAB将图片转换成coe文件

首先,MATLAB是特别强大的数学工具,如果不会MATLAB那么自己的整个职业生涯只能写写接口逻辑,与算法再无关联,很难有长久的进步,所以这里我们将给出几个MATLAB的例子。

我们为什么要将一幅图片转换成coe图片,因为在ISE软件中,我们可以发现ROM中预存的信息格式是coe文件,所以我们要想在ROM存储相应的信息,必须先把文件转换成coe文件。相信同学们也都明白该操作的意义,所以我们这里直接给出代码以供学习交流。

// *********************************************************************************// Project Name : OSXXXX// Author : zhangningning// Email : nnzhang1996@// Website: // Module Name : fig.coe// Create Time : -02-07 15:26:28// Editor : sublime text3, tab size (4)// CopyRight(c) : All Rights Reserved//// *********************************************************************************// Modification History:// Date By Version Change Description// -----------------------------------------------------------------------// XXXX zhangningning1.0 Original// // *********************************************************************************clc;clear all;RGB=imread('logo.jpg');R=RGB(:,:,1);G=RGB(:,:,2);B=RGB(:,:,3);outdata=zeros(1,40000);for r = 1:200for c = 1:200outdata((r-1)*200+c)=bitand(R(r,c),224)+bitshift(bitand(G(r,c),224),-3)+bitshift(bitand(B(r,c),192),-6);endendfid=fopen('data.coe','w+');fprintf(fid,'memory_initialization_radix=16;\nmemory_initialization_vector=\n');for i = 1:39999fprintf(fid,'%x,\n',outdata(i));endfprintf(fid,'%x;',outdata(40000));fclose(fid);

利用MATLAB将图片转换成txt文件

这里也说明一下这样做的原因,例如我们要经过串口发送一幅图片数据时,我们不能直接用UE打开图片,然后将UE中的信息发送出去,因为学过图像处理的同学都应该知道,对于bmp真彩图,图片中含有文件头和信息头与图片信息,对于索引图像更是有索引表,对于常见的jpg压缩图像更使与图片信息没有直接关系。所以我们要利用MATLAB将图片信息提取到txt文件中。弄清楚了该过程的意义之后,我们给出转换的代码如下:

// *********************************************************************************// Project Name : OSXXXX// Author : zhangningning// Email : nnzhang1996@// Website: // Module Name : fig.txt// Create Time : -02-07 15:26:28// Editor : sublime text3, tab size (4)// CopyRight(c) : All Rights Reserved//// *********************************************************************************// Modification History:// Date By Version Change Description// -----------------------------------------------------------------------// XXXX zhangningning1.0 Original// // *********************************************************************************clear all;%清空所有变量clc;%pic_data = imread('./800x600a.jpg'); %R:8bitpic_red= pic_data(:,:,1);pic_green = pic_data(:,:,2);pic_blue = pic_data(:,:,3);[ROW COL] = size(pic_red);% 对原图进行处理,将处理完的图像数据写入abc.txt文件fid = fopen('./abcde800x600a.txt','w+');for r = 1: ROWfor c = 1:COL%red取高3位,green取高3位,blue取高2位,拼成8位% 串口,一帧数据:8bit,原始图像一个像素点占24bitpic_out(r,c) = bitand(pic_red(r,c), 224) + bitshift(bitand(pic_green(r,c),224),-3)+ bitshift(bitand(pic_blue(r,c),192),-6); fprintf(fid,'%02x ',pic_out(r,c));endendfclose(fid);

利用MATLAB将图片转换成mif文件

intel FPGA中ROM文件中存储的时mif文件,与Xilinx中相同,想将图片信息存储到FPGA的ROM中,必须先将图片信息转存成mif文件,这里也不过说直接给出相应的代码供同学们理解:

// *********************************************************************************// Project Name : OSXXXX// Author : zhangningning// Email : nnzhang1996@// Website: // Module Name : fig.mif// Create Time : -02-07 15:26:28// Editor : sublime text3, tab size (4)// CopyRight(c) : All Rights Reserved//// *********************************************************************************// Modification History:// Date By Version Change Description// -----------------------------------------------------------------------// XXXX zhangningning1.0 Original// // *********************************************************************************function miffile(filename,var,width,depth)if(nargin~=4) %% be tired to do more inupts check!error('Need 4 parameters! Use help miffile for help!');end, fh=fopen(filename,'w+');fprintf(fh,'--Created by zhangningning.\r\n');fprintf(fh,'--nnzhang1996@.\r\n');fprintf(fh,'--%s.\r\n',datestr(now));fprintf(fh,'WIDTH=%d;\r\n',width);fprintf(fh,'DEPTH=%d;\r\n',depth);fprintf(fh,'ADDRESS_RADIX=HEX;\r\n');fprintf(fh,'DATA_RADIX=HEX;\r\n');fprintf(fh,'CONTENT BEGIN\r\n');var=rem(var,2^width);%% clip to fit the width;[sx,sy,sz]=size(var);%% can only fit 3D or less;value=var(1,1,1);sametotal=1;idepth=0;addrlen=1;temp=16;while(temp<depth) %%decide the length of addrtemp=temp*16;addrlen=addrlen+1;end,datalen=1;while(temp<width) %%decide the length of datatemp=temp*16;datalen=datalen+1;end,for k=1:sz,for j=1:sy,for i=1:sx,if(~((i==1 ) &&( j==1) &&( k==1)))if(idepth<depth),idepth=idepth+1;if(value==var(i,j,k))sametotal=sametotal+1;continue;elseif(sametotal==1)fprintf(fh,['\t%' num2str(addrlen) 'X:%' num2str(datalen) 'X;\r\n'],idepth-1,value);elsefprintf(fh,['\t[%' num2str(addrlen) 'X..%' num2str(addrlen) 'X]:%' num2str(datalen) 'X;\r\n'],idepth-sametotal,idepth-1,value);end,sametotal=1;value=var(i,j,k);end,elsebreak;end,end,end,end,end,if(idepth<depth)if(sametotal==1)fprintf(fh,['\t%' num2str(addrlen) 'X:%' num2str(datalen) 'X;\r\n'],idepth,value);elsefprintf(fh,['\t[%' num2str(addrlen) 'X..%' num2str(addrlen) 'X]:%' num2str(datalen) 'X;\r\n'],idepth-sametotal+1,idepth,value);end,end,if(idepth<depth-1)if(idepth==(depth-2))fprintf(fh,['\t%' num2str(addrlen) 'X:%' num2str(datalen) 'X;\r\n'],idepth+1,0);elsefprintf(fh,['\t[%' num2str(addrlen) 'X..%' num2str(addrlen) 'X]:%' num2str(datalen) 'X;\r\n'],idepth+1,depth-1,0);end,end,fprintf(fh,'END;\r\n');fclose(fh);

这里为了不同从给出了一个通用性比较高的代码,当然也可以像写coe文件那样简单的写一个MATLAB文件。

利用MATLAB将图片转换成bin文件‘

为什么要将图片转换成bin文件,举一个实际的例子,在做USB传输数据的时候,cypress公司给出的上位机传输有以下特点:

1、直接选择数据传输会传输多余的数据;

2、图像转成TXT图像传输,会对TXT图像中的数据进行ASCII编码;

所以我们要将图形数据转换成bin文件的数据,代码如下:

// *********************************************************************************// Project Name : OSXXXX// Author : zhangningning// Email : nnzhang1996@// Website: // Module Name : fig.bin// Create Time : -02-07 15:26:28// Editor : sublime text3, tab size (4)// CopyRight(c) : All Rights Reserved//// *********************************************************************************// Modification History:// Date By Version Change Description// -----------------------------------------------------------------------// XXXX zhangningning1.0 Original// // *********************************************************************************clear all;%清空所有变量clc;%pic_data = imread('./800x600a.jpg'); %R:8bitpic_red= pic_data(:,:,1);pic_green = pic_data(:,:,2);pic_blue = pic_data(:,:,3);[ROW COL] = size(pic_red);pic_out_h = zeros(ROW COL);pic_out_l = zeros(ROW COL);% 对原图进行处理,将处理完的图像数据写入abc.txt文件fid = fopen('./tuxiang.bin','w+');for r = 1: ROWfor c = 1:COLpic_out_h(r,c) = bitand(pic_red(r,c), 248) + bitshift(bitand(pic_green(r,c),224),-5);fprintf(fid,'%02x ',pic_out_h(r,c));pic_out_l(r,c) = bitshift(bitand(pic_green(r,c),28),3) + bitshift(bitand(pic_blue(r,c),248),-3)fprintf(fid,'%02x ',pic_out_l(r,c));endendfclose(fid);

总结

创作不易,认为文章有帮助的同学们可以收藏点赞支持。(工程也都在群中)对文章有什么看法或者需要更近一步交流的同学,可以加入下面的群:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。