接上一篇:quartus–图像显示、缩放、移动(一)
https://blog.csdn.net/wxkhturfun/article/details/104027027
二.图像预处理
1.为何要预处理
上一篇我们讲到要将图像格式转换成.mif格式,当然也可以是.hex格式,这里我们采用第一种。因为quartus17.1rom的存储主要支持的就是这两种格式。
2.如何转换图像格式
这里给出两种方案(均亲测有效)
2.1方案一:利用MATLAB直接转换图像
代码如下:
p=imread('zf.bmp');
pr=uint16(p(:,:,1));
pg=uint16(p(:,:,2));
pb=uint16(p(:,:,3));
[pm,pn]=size(pr);
pixs=pm*pn;
c=1023;
d=1047552;
f=240;
h=248;
pr_new=bitshift(pr,-3);
pg_new=bitshift(pr,-2);
pb_new=bitshift(pr,-3);
fid=fopen('zhangfei.mif','w');
fprintf(fid,'--Generated ys\n\n');
fprintf(fid,'WIDTH=16;\n');
fprintf(fid,'DEPTH=%d;\n\n',pixs);
fprintf(fid,'ADDRESS_RADIX=UNS;\n');
fprintf(fid,'DATA_RADIX=UNS;\n\n');
fprintf(fid,'CONTENT BEGIN\n');
for i =1:pm
for j=1:pn
fprintf(fid,'\t%ld:%ld;\n',(i-1)*pn+j-1,pr_new(i,j)*2048+pg_new(i,j)*32+pb_new(i,j));
end
end
fprintf(fid,'END;\n');
fclose(fid);
其中zf.bmp是我们的图像,记住图片不能太大,DE2-115这种垃圾开发板的一个ROM好像只有几k,教训是太大绝对存不下。
2.2方案二:利用图像软件工具
只用到下面的两个软件, 我记得都是免费软件,就自己下载吧。
考虑到时间问题,帮人帮到底,附上网盘链接链接:
https://pan.baidu.com/s/1MIK4p2AiMXs4VSmkTCmX-g
提取码:dgau
具体操作如下:
- 首先在下述链接中将图片转换成.bmp格式
http://pic.55.la/
- 修改图片大小
用Windows10自带的名为“画图”的软件即可。
点击“重新调整大小”,在弹出的界面中,可以选择百分比、或直接修改像素。
注意“保持纵横比”这一栏,不需要的话可以取消勾选。
- 修改完成后,(本人修改的为100*100像素)
先打开image2Lcd,并按照下图勾选。
选择水平扫描是因为VGA协议就是按照水平扫描来的。
接着打开BMP2MIF,将上一步转换好的文件加载,并选择RGB565、Mif。
其中RGB565的意义是三基色R、G、B分别为5位、6位、5位。
3.将图像存入ROM
首先你已经建立了一个工程,这个不属于本文讨论范围,接着选择rom并添加文件。
(老版的quartus直接看此文)
我用的quartus17.1:
步骤如下:
3. 选择ip catalog
2. 右边会弹出一个搜索栏,搜索rom,并双击ROM:1-PORT
3.起个名字
4.我们选择16bits(因为是RGB565),根据图片像素选择合适的words即可
5.导入.mif文件。(其余默认)
6.下一步
7.最后记得勾选inst.v文件。然后finish
下一篇:quartus–图像显示、缩放、移动(三):https://blog.csdn.net/wxkhturfun/article/details/104027671