-1

我想将多个对象的高度和宽度值保存在一个文本文件中,但它只保存了最后处理的图像数据。这是我的代码:

contents = get(hObject,'Value')
pilih=guidata(gcbo);
theImage{1}=getImage(handles.axes1);
theImage{2}=getImage(handles.axes2);
theImage{3}=getImage(handles.axes3);
theImage{4}=getImage(handles.axes4);
theImage{5}=getImage(handles.axes5);

for z = 1:5;
    Img = theImage{z};
    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));
        objects{idx}=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=objects{k};
                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 文件中。

4

1 回答 1

0

试试这个代码,

代码

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

希望这有效。

于 2016-02-18T14:47:32.963 回答