2016-01-26 4 views
-1

Я делаю проект, который требует получить координаты x, y порогового изображения через канал камеры. После порогового и фонового вычитания мне удалось получить вывод черно-белого с центроидом и его координаты. Теперь мне нужно извлечь и сохранить значения центроида «x» и «y» отдельно для дальнейших операций, которые будут основываться на этих значениях «x» и «y». вот код для центроида, что я включилИзвлечь 'x' и 'y' координаты центроида в matlab

stats = regionprops(bw, 'BoundingBox', 'Centroid'); 

    hold on 

    for object = 1:length(stats) 
     bb = stats(object).BoundingBox; 
     bc = stats(object).Centroid; 
     rectangle('Position',bb,'EdgeColor','r','LineWidth',2) 
     plot(bc(1),bc(2), '-m+') 
     a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ',        num2str(round(bc(2))))); 
     set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'red'); 

    end 

    hold off 

Как я извлечь «у» центроид значения «х» и работаться на потом? Thankyou.

+0

Здесь нет ни одного вопроса, или, по крайней мере, я не могу его видеть –

+0

Мне жаль .... мой Q ... КАК Я извлекаю координаты «x» и «y» отдельно, чтобы работать позже? –

+2

'bc (1)' is X и 'bc (2)' is y на каждой итерации .... –

ответ

1

Чтобы дополнить комментарий Андера, координаты центроидов хранятся в массиве bc, который вы используете после вызова rectangle для построения указанных центроидов. Если вам нужно использовать их позже, вы можете поместить их в массив N x 2, где N на самом деле length(stats), перед циклом.

Использование vertcat взгромоздить каждый х- и у-координаты, которые будут выглядеть следующим образом:

stats = regionprops(bw, 'BoundingBox', 'Centroid'); 

AllCentroids = vertcat(stats.Centroid); 

Который, как bc, но содержит все центроиды координаты. Вы можете сделать то же самое с координатами полей Bounding. Здесь ваш массив будет N x 4:

AllBB = vertcat(stats.BoundingBox); 

Вы можете также избавиться от нескольких строк в цикле и поместить их снаружи. Например:

a=text(AllCentroids(:,1)+15,AllCentroids(:,2), strcat('X: ', num2str(round(AllCentroids(:,1))), ' Y: ',        num2str(round(AllCentroids(:,2))))); 
set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'red'); 

    for object = 1:length(stats) 

     rectangle('Position',AllBB(k,:),'EdgeColor','r','LineWidth',2) 
     plot(AllCentroids(object,1),AllCentroids(object,2), '-m+') 

    end 

Надеюсь, что все станет проще!

 Смежные вопросы

  • Нет связанных вопросов^_^