Borrar filtros
Borrar filtros

how to save all value of centoid of many object from one image ?

1 visualización (últimos 30 días)
ElizabethR el 14 de Abr. de 2016
Comentada: Image Analyst el 20 de Abr. de 2016
i have a code,
a=imread('cen.png'); contain 2 object
centroid = zeros(2,2);
for i=1:count
centroid(i) = object(i).Centroid;
i try to get the centroid of each object, and save the all value of centoid object. But i get the error :
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in cek (line 8) centroid(i) = objek(i).Centroid;
i try to fix this error,but i don't find the way to fix this error. please help me.. thanks

Respuestas (1)

Sven el 19 de Abr. de 2016
The centroid is not a scalar value. It has two components (X coordinate, Y coordinate), so you cannot assign it to a scalar variable. Your code will work if you change this line:
centroid(i) = object(i).Centroid;
To this line:
centroid(i,:) = object(i).Centroid;
However you can also clean up the code chunk quite a bit and simply do:
a = imread('cen.png'); contains N objects
bw = im2bw(a);
stats = struct2table(regionprops(bw));
centroid = stats.Centroid; % Will be an N-by-2 array where N is the # of objects
Did this answer the question for you?
Thanks, Sven.
  3 comentarios
Sven el 20 de Abr. de 2016
It's just that tables are a little easier to use (in my opinion) than the regular output of regionprops() which is a struct. You could also do the following for the same result:
stats = regionprops(bw);
centroid = cat(1,stats.Centroid);
Image Analyst
Image Analyst el 20 de Abr. de 2016
allCentroids = [stats.Centroid];
xCentroids = allCentroid(1:2:end);
yCentroids = allCentroid(2:2:end);

Iniciar sesión para comentar.


Community Treasure Hunt

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

Start Hunting!

Translated by