matlab中jpg图像的rgb值的三维数组存入txt中
1个回答
展开全部
% 示例数据,首先转为真彩色
load durer
rgb=ind2rgb(X,map);
% 真彩数据可能有两种范围,0-1或者0-255,统一转换为0-255
if max(rgb(:)) <= 1
rgb = uint8(rgb*255);
end
% 如果从图片文件直接读入数据,不要前面的代码,直接从下面这句开始(注意改文件名)
% rgb = imread('D:\Documents\My Pictures\banner_Ardence.jpg');
% 打开文件用于保存结果
fid = fopen('JPEG2TXT.txt', 'wt+');
if fid == -1, return, end
% 写文件,按照红绿蓝顺序,每种颜色写成矩阵形式
for i = 1 : 3
for r = 1 : size(rgb, 1)
fprintf(fid, '%4i', double(rgb(r, :, i)));
fprintf(fid, '\n');
end
fprintf(fid, '\n');
end
fclose(fid);
load durer
rgb=ind2rgb(X,map);
% 真彩数据可能有两种范围,0-1或者0-255,统一转换为0-255
if max(rgb(:)) <= 1
rgb = uint8(rgb*255);
end
% 如果从图片文件直接读入数据,不要前面的代码,直接从下面这句开始(注意改文件名)
% rgb = imread('D:\Documents\My Pictures\banner_Ardence.jpg');
% 打开文件用于保存结果
fid = fopen('JPEG2TXT.txt', 'wt+');
if fid == -1, return, end
% 写文件,按照红绿蓝顺序,每种颜色写成矩阵形式
for i = 1 : 3
for r = 1 : size(rgb, 1)
fprintf(fid, '%4i', double(rgb(r, :, i)));
fprintf(fid, '\n');
end
fprintf(fid, '\n');
end
fclose(fid);
更多追问追答
追问
前几天运行不对,今天又试了下好了,估计是的当时自己也没弄明白,犯了一些小错误~~我后来用的程序,和你的没什么大变化,就是输出结果没有分段:少了两个 fprintf(fid, '\n');。
我改动了txt的一些数据之后,怎么把它再输回matlab,然后再显示改动之后的图像?txt里的数据格式什么的都没变~谢谢!成功了加分哦~程序的循环部分也不太一样~
[l,m,n]=size(I);
for k=1:n
for i=1:l
for j=1:m
追答
1、我对自己写的代码有信心,虽不能保证从不出错,但错的可能性很小;
2、加不加分没那么重要,我并不在乎这点虚拟的东西,只希望自己的劳动和付出得到尊重;
3、如果你保证文件格式完全没变,而且数据范围也没问题,可以用下面的代码:
rgb=load('JPEG2TXT.txt','-ascii');
[r,c]=size(rgb);
rgb=permute(reshape(rgb,[r/3, 3, c]),[1 3 2]);
image(rgb/255)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |