MAP 在 MATLAB 中必须至少有 'm x 3 array' 错误

MAP must be at least 'm x 3 array' error in MATLAB

我正在尝试使用 MATLAB Coder 生成 C 代码。该函数的输入是在 MATLAB 中由 imread 处理过的图像。由于输出应该是来自 imreadm x n x 3 数组,我不确定为什么会显示此错误。函数开头的断言如下所示。接下来是 rgb2gray ,这是错误的来源。

%#codegen

assert(isa(IM, 'uint8'));
assert(size(IM, 1) < 100);
assert(size(IM, 2) < 100);
assert(size(IM, 3) == 3);

I_temp = rgb2gray(IM); 

我收到的错误报告如下所示:

函数的输出和输入如下:

function [actual_lep_x, actual_lep_y, actual_rep_x, actual_rep_y, actual_lmp_x, actual_lmp_y, actual_rmp_x, actual_rmp_y, actual_lnp_x, actual_lnp_y, np_x, np_y] = Points( IM )

如果有人需要编译,我可以把.m文件发过来。

非常感谢您的帮助!

如果您的代码完全与您在图片中显示的相同,那么错误就很明显了。 IM 似乎是一个文件名,因为在上面的行中,您已经完成了 I_ttemp=imread(IM) (由于未知原因被注释)。现在,由于 rgb2gray 没有收到 m x n x 3 数组,它排除的其他参数是具有维度 m x 3 的颜色图。但是,您提供了一个格式为 1 x m 的文件名。因此错误。

你应该写:

I_temp=imread(IM);
if size(I_temp,3)==3
   I_temp=rgb2gray(I_temp);
end
%do processing on I_temp.