如何将多个数据保存在一个文本文件中
Posted
技术标签:
【中文标题】如何将多个数据保存在一个文本文件中【英文标题】:How to save multiple data in one text file 【发布时间】:2016-02-18 07:18:08 【问题描述】:我想将多个对象的高度和宽度值保存在一个文本文件中,但它只保存了最后处理的图像数据。这是我的代码:
contents = get(hObject,'Value')
pilih=guidata(gcbo);
theImage1=getImage(handles.axes1);
theImage2=getImage(handles.axes2);
theImage3=getImage(handles.axes3);
theImage4=getImage(handles.axes4);
theImage5=getImage(handles.axes5);
for z = 1:5;
Img = theImagez;
abu=rgb2gray(Img);
cb=imclearborder(abu);
thresh=graythresh(cb);
b=im2bw(cb,thresh);
bw=bwareaopen(b,60);
bwfill=imfill(bw,'holes');
s=regionprops(bwfill,'BoundingBox');
objects=cell(numel(s),1);
for idx=1:numel(s)
bb=floor(s(idx).BoundingBox);
out=bsxfun(@times,Img,uint8(bwfill));
objectsidx=out(bb(2):bb(2)+bb(4),bb(1):bb(1)+bb(3),:);
end
X = zeros(3, numel(objects));
for k = 1:numel(objects)
k1=objectsk;
c1=rgb2gray(k1);
t1=graythresh(c1);
biner1=im2bw(c1,t1);
[height,width]=size(biner1);
a1=bwarea(biner1);
X(:,k)=[height;width;a1];
end
end
save grading/datauji.txt X -ascii;
我该怎么办?非常感谢你。这是我的图像。有5个,我想把所有对象的高度和宽度数据保存在一个txt文件中。
【问题讨论】:
【参考方案1】:试试这个代码,
代码
numel = 100;
file = fopen('ans.txt','w');
testdata = rand(3, numel);
X = zeros(3, numel);
for i=1:numel
X(:,i) = testdata(:,i);
fprintf(file,'%ld %ld %ld\n', X(1,i), X(2,i), X(3,i));
end
fclose(file);
我创建了一个虚拟数据点数,即 100。我在“testdata”的变量中创建了随机数据,然后我迭代了“numel”,每次保存时都以逗号分隔类型保存了所有 3 个数据
ans.txt
11.0 2.2 3.1
4.2 5.2 1.1
32.1 542 12.1
12. 12 23
希望这行得通。
【讨论】:
我试过并得到这个错误信息:???索引超出矩阵维度。 ==> guikedelaizulfa>ekstrakfitur_Callback 在 1158 处出错 fprintf(file,'%ld %ld %ld\n', X(height), X(width), X(a1)); ==> gui_mainfcn 中的错误 96 feval(varargin:); ==> guikedelaizulfa 中的错误 42 gui_mainfcn(gui_State, varargin:); ==> @(hObject,eventdata)guikedelaizulfa('ekstrakfitur_Callback',hObject,eventdata,guidata(hObject)) 中的错误???评估 uicontrol 回调时出错 不能使用 fprintf(file,'%ld %ld %ld\n', X(height), X(width), X(a1));,会报错,如 X超出矩阵限制。试试这个。fprintf(file,'%ld %ld %ld\n', height, width, a1);
或 fprintf(file,'%ld %ld %ld\n', X(1,k), X(2,k), X(3,k));
原样。
我试过你的建议,但它只保存了 1x25 矩阵(由高度、宽度和 a1 组成)数据,而应该有 3x60(高度;宽度;a1)。我将发布我的图片作为您的参考
尝试将文件打开代码放在z loop
之外,它应该在文本文件中保存 (z*numel)x3 矩阵以上是关于如何将多个数据保存在一个文本文件中的主要内容,如果未能解决你的问题,请参考以下文章