我的源代码:
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行)cutoff=(阈值)^2.
find_edge中出错(第15行)x=边(img,filter);
谢谢!
在内部for循环中,filter
将是一个只有一个条目包含当前过滤器名称的单元格。它仍然是一个单元数组,因此edge
函数返回一个错误。您可以使用filter{:}
访问filter
的内容,即具有当前过滤器名称的字符串。
我认为您在构建文件名时也有错误。我想你想用filter
而不是list_filter
来创建文件名,对吧?
因此:
imwrite(edge(img, filter{:}), [img_name '_' filter{:} format], 'jpeg');
附言:正如@thewaywewalk在评论中所说,filter
是一个函数的名称。不建议将其用作变量名,因为这样filter
函数就不能再工作了。我建议将其重命名为例如current_filter
。