matlab find edge Undefined function 'power' for input arguments of type 'cell'
matlab find edge Undefined function 'power' for input arguments of type 'cell'
我的源代码:
function void = find_edge()
path_io = 'io_find_edge\';
format = '.jpg';
list_img = ['Parent_006.jpg'; 'Parent_007.jpg'; 'Parent_008.jpg'; 'Parent_009.jpg'; 'Parent_010.jpg'];
list_filter = {'sobel', 'canny', 'prewitt', 'roberts', 'log'};
for index = 1:size(list_img)
img_name = list_img(index, 1:10);
img = rgb2gray(imread([path_io img_name format]));
for filter = list_filter
imwrite(edge(img, filter), [img_name '_' filter format], 'jpeg');
end
end
错误:
'cell'.
类型的输入参数的未定义函数 'power'
边缘错误(第 420 行)
截止 = (thresh).^2;
find_edge 中的错误(第 15 行)
x = 边缘 (img, 过滤器);
谢谢!
在内层 for 循环中,filter
将是一个只有一个条目包含当前过滤器名称的单元格。它仍然是一个元胞数组,所以 edge
函数 returns 是一个错误。您可以使用 filter{:}
访问 filter
的内容,即具有当前过滤器名称的字符串。
我想你在构造文件名时也有错误。我假设您想使用 filter
而不是 list_filter
来创建文件名,对吗?
因此:
imwrite(edge(img, filter{:}), [img_name '_' filter{:} format], 'jpeg');
PS:正如@thewaywewalk 在评论中所说,filter
是一个函数的名称。不建议将其用作变量名,因为那样 filter
函数将不再起作用。我建议将其重命名为例如current_filter
.
我的源代码:
function void = find_edge()
path_io = 'io_find_edge\';
format = '.jpg';
list_img = ['Parent_006.jpg'; 'Parent_007.jpg'; 'Parent_008.jpg'; 'Parent_009.jpg'; 'Parent_010.jpg'];
list_filter = {'sobel', 'canny', 'prewitt', 'roberts', 'log'};
for index = 1:size(list_img)
img_name = list_img(index, 1:10);
img = rgb2gray(imread([path_io img_name format]));
for filter = list_filter
imwrite(edge(img, filter), [img_name '_' filter format], 'jpeg');
end
end
错误: 'cell'.
类型的输入参数的未定义函数 'power'边缘错误(第 420 行) 截止 = (thresh).^2;
find_edge 中的错误(第 15 行) x = 边缘 (img, 过滤器);
谢谢!
在内层 for 循环中,filter
将是一个只有一个条目包含当前过滤器名称的单元格。它仍然是一个元胞数组,所以 edge
函数 returns 是一个错误。您可以使用 filter{:}
访问 filter
的内容,即具有当前过滤器名称的字符串。
我想你在构造文件名时也有错误。我假设您想使用 filter
而不是 list_filter
来创建文件名,对吗?
因此:
imwrite(edge(img, filter{:}), [img_name '_' filter{:} format], 'jpeg');
PS:正如@thewaywewalk 在评论中所说,filter
是一个函数的名称。不建议将其用作变量名,因为那样 filter
函数将不再起作用。我建议将其重命名为例如current_filter
.