MATLAB通过txt文件生成图像

今天学习《计算机视觉基础》,作者的没给1.7的素材,然后自己造了个数据。分享一下。

% 创建一幅图像
a=imread('landscape.jpg');   % 读取landscape.jpg图片
b=rgb2gray(a);               %由rgb图片转化为灰度图
[m,n] = size(b);              
%matlab由图片转换为矩阵是一列一列转的,txt文件数据读入矩阵也是一列一列读入的,后文以行为单位处理的话需要转置,后面还要再转置一次
fid0=fopen('landscape.txt','wt');   %b在matlab工作目录创建并打开一个名为landscape.txt的文件,形式为可写

fprintf(fid0,'%x\n',b);          % 把灰度图矩阵b以16进制写入landscape.txt文件,写入一个元素换一行,若按10进制保存后续处理有点麻烦
fclose(fid0);  

fidID = fopen('landscape.txt');   %读入数据,这里的fidID非常奇怪,你会发现它是一个值,网上有的说可以将其视为“指针”,因为不影响我处理数据便不过多详究
A = textscan(fidID, '%s' ,'delimiter', '\b\t;'); %读入数据,textscan命令能将数据以字符串%s读入到一个元胞数组中,若你当初采用%d写如文件,后处理就有点烦
A = hex2dec(A{1,1}); % 转成10进制整数,这个地方若是当初保存的是10进制,你会因此而头疼很久
B = reshape(A,[m,n]); %[m,n]是你原灰度图像的矩阵维度,如果你原先在保存时转置了数据,这里你可能需要试试[n,m]
B1 = reshape(A,[n,m]); %改维度的图
figure
subplot(1,3,1)
imshow(b,[]);
xlabel('原图')
subplot(1,3,2)
imshow(B,[]); %原图
xlabel('按原先维度生成的图')
subplot(1,3,3)
imshow(B1,[]); %改了维度的图
xlabel('改了维度生成的图')

生成的结果对比如下:

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值