How to replace Nonscalar struct for Matlab Coder error?

2 visualizzazioni (ultimi 30 giorni)
Hi,
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.

Risposta accettata

David Fink
David Fink il 8 Mag 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
end
We are looking to allow the original syntax in a future release of MATLAB Coder!
  3 Commenti
WanYu
WanYu il 10 Mag 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 il 11 Mag 2020
It looks like the test code that calls the entry-point errored out - "View errors" should give the specifics.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su MATLAB Coder in Help Center e File Exchange

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by