我正在按照MathWorks的指南将MATLAB代码转换为C代码。第一步是在需要转换为C代码的每个函数之后输入
%#codegen
然而,这样做会在下面的代码中给我以下提示。
function lanes=find_lanes(B,h, stats)
% Find the regions that look like lanes
%#codegen
lanes = {};
l=0;
for k = 1:length(B)
metric = stats(k).MajorAxisLength/stats(k).MinorAxisLength;
%testlane(k);
%end
%function testlane(k)
coder.inline('never');
if metric > 5 & all(B{k}(:,1)>100)
l=l+1;
lanes(l,:)=B(k);
else
delete(h(k))
end
end
end
在花括号周围:
代码生成仅支持“varargin”和“varargout”的单元操作
另一个提示说:
代码生成不支持通过索引增长变量“lanes”的大小
其中第二次提到了 lanes。
该函数的输入参数为:
B - 是bwboundaries 图像处理工具箱函数的输出。它是一个P×1 的单元数组,其中 P 是对象和空洞的数量。单元格数组中的每个单元格都包含一个 Q×2 矩阵。矩阵中的每一行都包含边界像素的行和列坐标。Q 是相应区域的边界像素数。
h - 绘制对象的边界,并带有绿色轮廓,同时是一个大小为 1 X length(B) 的矩阵,保存边界的值,如下所示:
h(K)=plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 2);//boundary(:,1) - Y coordinate, boundary(:,2) - X coordinate.
统计 - 19x1个结构体数组,使用图像处理工具箱的regionprops函数获取,包含以下字段: MajorAxisLength (主轴长度) 和 MinorAxisLength (次轴长度)(对象的)
非常感谢您在帮助我解决此错误方面提供的任何输入。先行致谢!