【发布时间】:2018-07-21 00:39:37
【问题描述】:
我写了一段代码来清理和打印多张图片,
data_1=csvread(data)
for h=1:30
im_old=imread(strcat('catches\image_generator (',int2str(h),').png'));
im_bw=func_bw(im_old);
im_2=func_clean_tr(im_bw);
[im_3a,im_3b]=edge_trial(im_2);
da=data_1{h,2};
name=strcat('trrr\',da,'trial.png');
imwrite(im_3b,strcat('trrr\',int2str(h),'trial.png'));
end
有一个特殊的问题。当参数为:
imwrite(im_3b,strcat('trrr\',int2str(h),'trial.png'));
但是当我将参数设置为时它不会起作用:
imwrite(im_3b,strcat('trrr\',da,'trial.png'));
我交叉检查了da 是一个 1x1 字符串,strcat('trrr\',da,'trial.png') 也是一个 1x1 字符串。
显示的错误是:
使用 imwrite>parse_inputs 时出错(第 510 行)
必须提供文件名。
不知道为什么imwrite 对两个字符串的处理方式不同...
Edit1:我的 data_1 如下所示: 1、X55N3 2、PQZXS 3、HDDS3... 此外,da=data_1{h,2}; 的值是“X55N3”
【问题讨论】:
-
在我看来,MATLAB 通过引入字符串对象和双引号使事情变得更加复杂。注意单引号和双引号是不同的东西,创建不同的类型对象。如果
da是一个字符串,则将它与两个字符数组连接到name。我不知道这会做什么,但这可能是出乎意料的。您是否打印了name以查看它的外观? -
可能
name变成一个字符串,但imwrite需要一个字符数组? -
谢谢,我刚刚读到
imread的输入是只允许字符数组,不允许字符串。