imwrite 在 Matlab 中给出不一致的错误
imwrite giving inconsistent error in Matlab
我写了一个代码来清理和打印多张图片,
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 起作用
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 字符串。
显示的错误是:
Error using imwrite>parse_inputs (line 510)
A filename must be supplied.
不知道为什么 imwrite
以不同的方式处理两个字符串...
Edit1:我的 data_1 内容如下:
1、X55N3
2、PQZXS
3、HDDS3...
另外,da=data_1{h,2} 的值;是“X55N3”
MATLAB 仍然有点 transitioning to the new string
class。传统上,MATLAB 总是在需要字符串的地方使用 char
数组。他们在 R2016b 中引入了 string
class,并且还没有更新所有工具箱中的所有函数,还采用了 string
,而他们过去采用的是 char
数组。
我正在使用 R2017a,在使用 imread
和字符串时看到这个:
>> imread("cameraman.tif");
Error using imread>parse_inputs (line 450)
The file name or URL argument must be a character vector.
Error in imread (line 322)
[filename, fmt_s, extraArgs, was_cached_fmt_used] = parse_inputs(cached_fmt, varargin{:});
但是,这有效:
>> imread(char("cameraman.tif"));
所以您的解决方案是将 string
转换为 char
数组:
imwrite(im_3b,char(strcat('trrr\',da,'trial.png')));
或:
imwrite(im_3b,strcat('trrr\',char(da),'trial.png'));
我写了一个代码来清理和打印多张图片,
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 起作用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 字符串。
显示的错误是:
Error using imwrite>parse_inputs (line 510)
A filename must be supplied.
不知道为什么 imwrite
以不同的方式处理两个字符串...
Edit1:我的 data_1 内容如下: 1、X55N3 2、PQZXS 3、HDDS3... 另外,da=data_1{h,2} 的值;是“X55N3”
MATLAB 仍然有点 transitioning to the new string
class。传统上,MATLAB 总是在需要字符串的地方使用 char
数组。他们在 R2016b 中引入了 string
class,并且还没有更新所有工具箱中的所有函数,还采用了 string
,而他们过去采用的是 char
数组。
我正在使用 R2017a,在使用 imread
和字符串时看到这个:
>> imread("cameraman.tif");
Error using imread>parse_inputs (line 450)
The file name or URL argument must be a character vector.
Error in imread (line 322)
[filename, fmt_s, extraArgs, was_cached_fmt_used] = parse_inputs(cached_fmt, varargin{:});
但是,这有效:
>> imread(char("cameraman.tif"));
所以您的解决方案是将 string
转换为 char
数组:
imwrite(im_3b,char(strcat('trrr\',da,'trial.png')));
或:
imwrite(im_3b,strcat('trrr\',char(da),'trial.png'));