矩阵实验室查找边缘 类型为"cell"的输入参数的未定义函数"power"



我的源代码:

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

最新更新