我正在尝试使用 MATLAB Coder 生成C代码。函数的输入是由MATLAB中的imread
处理的图像。由于输出应该是来自imread
的 m 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 文件。
非常感谢帮助!
答案 0 :(得分:2)
如果您的代码与图像中显示的代码完全相同,则错误很明显。 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.