Borrar filtros
Borrar filtros

How to replace Nonscalar struct for Matlab Coder error?

2 visualizaciones (últimos 30 días)
WanYu el 7 de Mayo de 2020
Comentada: David Fink el 11 de Mayo de 2020
When I'm trying to transform my Matlab code to C, this error appeared yet I don't know how to modify it as it necessary in my function.
%% Remove small objects.
binaryImage = imclearborder(binaryImage);
binaryImage = bwareaopen(binaryImage, 100);
%% Invert the binarized image
% binaryImage = ~ binaryImage;
%% Get centroid on image
stats = regionprops(binaryImage, 'Centroid'); % acting on the cleaned image
centroids = cat(1, stats.Centroid);
x1 = centroids(1,1);
y1 = centroids(1,2);
x3 = centroids(3,1);
y3 = centroids(3,2);
The error " Directly accessing field or property of nonscalar struct or object not supported for code generation" showed at
centroids = cat(1, stats.Centroid);
How I can resolved it as it is necessary for my function.

Respuesta aceptada

David Fink
David Fink el 8 de Mayo de 2020
centroids = cat(1, stats.Centroid);
is just concatenating the centroid row vectors in the first dimension (vertical), which can be replaced by a loop:
numRegions = numel(stats);
centroids = zeros(numRegions, numel(stats(1).Centroid)); % pre-initialize to set size
for region = 1:numRegions
centroids(region, :) = stats(region).Centroid; % write one row at a time
We are looking to allow the original syntax in a future release of MATLAB Coder!
  3 comentarios
WanYu el 10 de Mayo de 2020
Hi David,
This error came out after that,
The invoked code did not call entry-point function
What should I do or how to resolve this error?
David Fink
David Fink el 11 de Mayo de 2020
It looks like the test code that calls the entry-point errored out - "View errors" should give the specifics.

Iniciar sesión para comentar.

Más respuestas (0)


Más información sobre Code Generation, GPU, and Third-Party Support en Help Center y File Exchange.





Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by