0

我正在尝试使用MATLAB Coder生成 C 代码。该函数的输入是已imread在 MATLAB 中处理的图像。由于输出应该是来自 的mxnx 3数组imread,我不确定为什么会显示此错误。函数开头的断言如下所示。接下来是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文件。

帮助将不胜感激!

4

1 回答 1

3

如果您的代码与图像中显示的完全相同,则错误很明显。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.
于 2015-04-22T02:05:34.897 回答