从keil中导出图像数据并且使用Matlab解析

从keil中导出图像数据并且使用Matlab解析

最近有个项目,需要使用单片机和CCD采集图像数据,然后再该单片机上计算。图像处理的算法需要先在电脑上测试,但是电脑上并没有真实图像数据,所以需要使用单片机先采集几张图像,然后导出到电脑上。
这时候使用仿真器和keil进行debug,因为图像是保存在内存中的,所以图像的起始地址和终止地址都很清楚,这样就可以由keil导出txt文件,再由该文件就可以解析出图像数据。关于keil如何导出txt,请看这里。
假定我们现在已经有了导出的txt数据,接下来将会使用matlab解析该txt,生成jpg格式的图像,以便调试使用。
下面是matlab代码:

clear all; clc;
fid = fopen('E:\CAMERA1.TXT');%打开导出的txt
tline = fgetl(fid);
list_cell={};
while ischar(tline)  %读取txt的每一行将其储存到一个元胞里
    disp(tline);
    tline = fgetl(fid);
    list_cell = [list_cell;tline];
end
fclose(fid);%关闭文件
a = {};
for i=1:length(list_cell)-3%因为生成的txt尾部有些参数不要,所以加这个
    a = [a;list_cell{i}];
end

b = a;
for i=1:length(a)   %因为生成的txt中还有地址信息,但是比数据行要短,所以加这个把他去掉
    if(length(a{i})<length(b{1}))
       f=i;
       d=i-(length(a)-length(b));
       b(i-(length(a)-length(b))) = [];
    end
end

for i=1:19200            %一行中除了数据还有别的信息,详情看生成txt那片文章,加这一步将数据取出来
   b(i) = {b{i}(10:41)};
end
c=zeros(480,640);      %图片大小为640*480,所以建立一个这么大的mat来存储
width = 1;
height = 1;
for i=1:19200            %将数据转为mat,
    for k = 1:2:31
        c(height,width) = hex2dec(b{i}(k:k+1));       %生成的txt都是十六进制,所以将其转为十进制
        width = width+1;
        if width>640
            width=1;
            height = height+1;
        end
    end
end
imwrite(mat2gray(c),'E:\img1.jpg')  %保存图像
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦醒blue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值