在MATLAB中绘制任意数量的图像
我想绘制随机数目的图像。意味着我已经搜索了与我的查询相关的图像,根据给定的查询,图像可以是5、6或更多。有没有办法根据匹配的图像数量自动绘制它们 以下是我目前的代码:在MATLAB中绘制任意数量的图像,matlab,text,Matlab,Text,我想绘制随机数目的图像。意味着我已经搜索了与我的查询相关的图像,根据给定的查询,图像可以是5、6或更多。有没有办法根据匹配的图像数量自动绘制它们 以下是我目前的代码: for k = 1:length(textfiles) file = [sdirectory '/' textfiles(k).name]; file1 = [sdirectory1 '/' imgfiles(k).name]; fid=fopen(file,'r'); tline = fg
for k = 1:length(textfiles)
file = [sdirectory '/' textfiles(k).name];
file1 = [sdirectory1 '/' imgfiles(k).name];
fid=fopen(file,'r');
tline = fgetl(fid);
while ischar(tline)
line_string = sprintf('%s',tline);
x = get(handles.edit1,'String');
u=strfind(line_string,x);
tline = fgetl(fid);
if u>0
file2=imread(file1);
figure,imshow(imresize(file2,0.5)),title(file1);
break;
end
end
fclose(fid);
end
您可以将它们连接成多帧/多页图像(4D矩阵),并使用
蒙太奇
显示它们
mframe = cat (4, img1, img2, img3);
montage (mframe)
由于您不知道要打印的图像数量,因此可以先将它们全部放入单元格数组:
mframe = cell (); % if you know in advance the number of images...
for ...
## whatever code you have to pick the right images
mframe{end+1} = img;
endfor
mframe = cat (4, mframe{:});
montage (mframe)
这假设所有图像都具有相同的大小、所有RGB或灰度以及相同的类别,如果它们不是,您可以使用
padarray
轻松地对它们进行填充,并使用im2uint8
、im2double
等将它们转换为相同的类别。对于k=1:length(textfiles)
文件=[sdirectory'/'textfiles(k).name]代码>file1=[sdirectory1'/'imgfiles(k.name]代码>fid=fopen(文件,'r')代码>tline=fgetl(fid)代码>而ischar(tline)
`line_string=sprintf('%s',tline);`x=get(handles.edit1,'String')代码>`u=strfind(第_行字符串,x);`<代码>tline=fgetl(fid)代码>如果u>0
file2=imread(file1)代码>图,imshow(imresize(文件2,0.5)),标题(文件1)代码>中断代码>end
end
fclose(fid)代码>end
在上述代码中,最终图像在文件1中。我将您的代码直接粘贴到您的问题中。现在,您能描述一下这是什么输出,以及您想要什么吗?在这段代码中,检索与查询字符串匹配的图像。根据输入的字符串,图像可以是任意数字。图像存储在变量file1
中。我希望将图像绘制成一个图形,知道根据给定的查询,图像的数量可能不同。给出了未定义的函数或变量mframe
,这是对OP原始问题的一个令人印象深刻的猜测。我只是看着他的代码才明白。@user3416063我猜你是想用for循环。必须在循环之前初始化空单元格数组(我刚刚调整了问题)。