showShape

Отобразите формы на изображении, видео или облаке точек

Описание

пример

showShape(shape,position) отображения один или несколько экземпляров формы shape в текущей системе координат в заданных местоположениях position.

пример

showShape(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение". Например, 'Color', 'yellow'задает цвет отображенных форм как желтый.

Примеры

свернуть все

Считайте изображение в рабочую область.

I = imread('visionteam1.jpg');

Создайте детектор людей совокупных функций канала (ACF).

detector = peopleDetectorACF()
detector = 
  acfObjectDetector with properties:

             ModelName: 'inria-100x41'
    ObjectTrainingSize: [100 41]
       NumWeakLearners: 2048

Обнаружьте людей в изображении.

[bboxes,scores] = detect(detector,I);

Отобразите изображение с помеченным прямоугольником, включая связанный счет обнаружения, вокруг каждого обнаруженного человека.

figure
imshow(I)
labels = "person:"+scores;
showShape('rectangle',bboxes,'Label',labels)

Считайте данные об облаке точек в рабочую область.

ptCloud = pcread('teapot.ply');

Отобразите данные об облаке точек.

figure
pcshow(ptCloud)
xlabel('X')
ylabel('Y')
zlabel('Z')

Задайте кубоид и отобразите его в зеленом с непрозрачностью 0.5.

pos = [0.3753 0 1.65 6 4 3 0 0 0];
showShape('cuboid',pos,'Color','green','Opacity',0.5)

Считайте данные об облаке точек в рабочую область.

ptCloud = pcread('teapot.ply');

Задайте вращение матричное и 3-D преобразование, чтобы вращать облако точек и связанный кубоид, 5 градусами.

rot = 5;
R = [ cosd(rot) sind(rot) 0 0; ...
     -sind(rot) cosd(rot) 0 0; ...
      0       0           1 0; ...
      0       0           0 1];
  
tform = affine3d(R);

Вычислите представленные пределы X и Y облака точек, чтобы гарантировать, что облако точек не отсекается во время вращения.

pcLimits = abs([ptCloud.XLimits ptCloud.YLimits]);
maxLimit = max(pcLimits);

Добавьте дополнительную маржу в график препятствовать тому, чтобы кубоид был отсечен во время вращения.

margin = 1;
maxLimit = maxLimit + margin;

xlimits = [-maxLimit maxLimit];
ylimits = [-maxLimit maxLimit];
zlimits = ptCloud.ZLimits;

Создайте проигрыватель для визуализации облака точек.

player = pcplayer(xlimits,ylimits,zlimits);

Настройте подписи по осям проигрывателя.

xlabel(player.Axes,'X (m)');
ylabel(player.Axes,'Y (m)');
zlabel(player.Axes,'Z (m)');

Задайте кубоид вокруг облака точек.

cuboidPosition = [0.3753 0 1.65 6 4 3 0 0 0];

Задайте выходное представление для вращения кубоида. Используйте те же пределы в качестве проигрывателя так, чтобы кубоид не был отсечен. Затем отобразите вращаемое облако точек и кубоид.

gridSize = [1 1 1];
ref = imref3d(gridSize,xlimits,ylimits,zlimits);

for i = 1:round((360/rot))
    % Rotate point cloud.
    ptCloud = pctransform(ptCloud,tform);
    
    % Rotate the cuboid.
    cuboidPosition = bboxwarp(cuboidPosition,tform,ref);
    
    % Show rotated point cloud data.
    view(player,ptCloud)
    
    % Show rotated cuboid.
    showShape('cuboid',cuboidPosition, ...
        'Parent',player.Axes, ...
        'Color','green', ...
        'Opacity',0.5)
    
    % Use drawnow to synchronize point cloud and shape visualization.
    drawnow
end

Входные параметры

свернуть все

Тип формы в виде вектора символов. Вектором может быть 'line'прямоугольник, 'cuboid, 'polygon', или 'circle'.

Типы данных: string

Положения и размеры форм, заданных согласно типу форм, описанных в этой таблице.

BoundingboxОписание
Выровненный осью прямоугольник

Заданный в пикселе координирует как M-by-4 числовая матрица со строками формы [x y w h], где:

  • M является количеством выровненных осью прямоугольников.

  • x и y задайте верхний левый угол прямоугольника.

  • w задает ширину прямоугольника, который является его длиной вдоль x - ось.

  • h задает высоту прямоугольника, который является его длиной вдоль y - ось.

Вращаемый прямоугольник

Заданный в пространственных координатах как M-by-5 числовая матрица со строками формы [xctr yctr xlen ylen yaw], где:

  • M является количеством вращаемых прямоугольников.

  • xctr и yctr задают центр прямоугольника.

  • xlen задает ширину прямоугольника, который является его длиной вдоль x - ось перед вращением.

  • ylen задает высоту прямоугольника, который является его длиной вдоль y - ось перед вращением.

  • yaw задает угол поворота в градусах. Вращение по часовой стрелке положительно вокруг центра ограничительной рамки.

Square rectangle rotated by -30 degrees.

Кубоид

Заданный в пространственных координатах как M-by-9 числовая матрица со строками формы [xctr yctr zctr xlen ylen zlen xrot yrot zrot], где:

  • M является количеством кубоидов.

  • xctr, yctr и zctr задают центр кубоида.

  • xlen, ylen и zlen задают длину кубоида вдоль x - оси, y - оси, и z - ось, соответственно, перед вращением.

  • xrot, yrot и zrot задают углы поворота кубоида вокруг x - ось, y - ось, и z - ось, соответственно. xrot, yrot и углы поворота zrot в градусах о центре кубоида. Каждое вращение по часовой стрелке положительно относительно положительного направления связанной пространственной оси. Функция вычисляет матрицы вращения, принимающие ZYX закажите Углы Эйлера [xrot yrot zrot].

Рисунок показывает, как эти значения определяют положение кубоида.

Circle

Заданный в пространственных координатах как M-by-3 числовая матрица со строками формы [xctr yctr radius], где:

  • M является количеством кругов.

  • xctr и yctr задают центр круга.

  • radius задает радиус круга.

Line

Заданный в пространственных координатах как P-by-2 матрица, в которой каждая строка [x y] конечная точка или 1 2P вектором из последовательных конечных точек от [x 1 y 1 x 2 y 2x P x P].

  • P является количеством конечных точек.

  • [x1 y 1], [x 2 y 2], и x P x P описывает конечные точки.

Чтобы задать несколько линий, которые содержат различные количества конечных точек, можно использовать формат массива ячеек, описанный для многоугольника.

Polygon

Заданный в пространственных координатах как M-by-1 массив ячеек, в котором каждая ячейка содержит L-by-2 матрица [x y] местоположения вершины или 1 2L вектором из последовательных местоположений вершины формы [x 1, y 1, x 2, y 2, … x L, y L], где:

  • M является количеством многоугольников.

  • [x1 y 1], [x 2 y 2] описывают местоположения вершины или конечные точки.

  • L является количеством вершин в многоугольнике или конечных точек в линии. Каждый многоугольник или линия могут иметь различное количество вершин или конечных точек.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Color', 'yellow'задает цвет отображенных форм как желтый.

Сформируйте метку в виде разделенной запятой пары, состоящей из 'Label' и или скаляр, M - вектор элемента или M - массив ячеек из символьных векторов элемента.

Если вход является скалярным значением, то функция применяет то же самое значение как метка к каждой форме. Если входом является M - векторный массив элемента или массив ячеек, то функция применяет каждое значение к соответствующей форме, с помощью порядка, в котором формы заданы к функции. M является количеством форм, заданных к функции.

Цвет формы в виде разделенной запятой пары, состоящей из 'Color' и один или несколько триплетов RGB, или одно или несколько названий цвета или коротких названий цвета. Чтобы использовать тот же цвет для всех форм, задайте сингл (MATLAB ColorSpec) название цвета или один триплет RGB.

Чтобы использовать различный цвет для каждой формы, задайте M - векторный массив элемента или массив ячеек названий цвета или M-by-3 числовая матрица, в которой каждой строкой является триплет RGB. M является количеством форм, заданных к функции.

Непрозрачность формы заполняет в виде разделенной запятой пары, состоящей из 'Opacity' и M - вектор элемента из числовых значений в области значений [0 1]. Чтобы использовать ту же непрозрачность для всех форм, задайте скалярное значение непрозрачности. Для полностью непрозрачной заливки формы, набор 'Opacity' к 1.

Выведите оси в виде разделенной запятой пары, состоящей из 'Parent' и графический объект Свойств осей графика.

Цвет границы в виде разделенной запятой пары, состоящей из 'Color' и один или несколько триплетов RGB, или одно или несколько названий цвета или коротких названий цвета. Чтобы использовать тот же цвет для всех границ, задайте сингл (MATLAB ColorSpec) название цвета или один триплет RGB.

Чтобы использовать различный цвет для каждой формы, задайте M - векторный массив элемента или массив ячеек названий цвета или M-by-3 числовая матрица, в которой каждой строкой является триплет RGB. M является количеством форм, заданных к функции.

Ширина границы в пикселях в виде разделенной запятой пары, состоящей из 'LineWidth' и положительное скалярное целое число или M - вектор элемента из положительных скалярных целых чисел. Чтобы использовать ту же ширину линии для всех форм, задайте положительное скалярное целое число. В противном случае задайте M - вектор элемента из положительных целых чисел, где M является количеством форм, заданных к функции.

Непрозрачность границы формы заполняет в виде разделенной запятой пары, состоящей из 'Opacity' и M - вектор элемента из числовых значений в области значений [0 1]. Чтобы использовать ту же непрозрачность для границы всех форм, задайте скалярное значение непрозрачности. Для полностью непрозрачной границы, набор 'Opacity' к 1.

Цвет текста метки в виде разделенной запятой пары, состоящей из 'Color' и один или несколько триплетов RGB, или одно или несколько названий цвета или коротких названий цвета. Чтобы использовать тот же цвет для текста всех меток, задайте сингл (MATLAB ColorSpec) название цвета или один триплет RGB.

Чтобы использовать различный цвет для текста каждой метки, задайте M - векторный массив элемента или массив ячеек названий цвета или M-by-3 числовая матрица, в которой каждой строкой является триплет RGB. M является количеством меток, заданных к функции.

Пометьте непрозрачность в виде разделенной запятой пары, состоящей из 'Opacity' и M - вектор элемента из числовых значений в области значений [0 1]. Чтобы использовать ту же непрозрачность для всех меток, задайте скалярное значение непрозрачности. Для полностью непрозрачной метки, набор 'Opacity' к 1.

Пометьте шрифт в виде разделенной запятой пары, состоящей из 'LabelFont' и 'FixedWidth' или шрифт, который поддерживает ваша система. Чтобы отобразить и распечатать текст правильно, необходимо выбрать шрифт, который поддерживает система. Если вы выбираете неподдерживаемый шрифт, функция возвращает ошибку. Если вы задаете 'FixedWidth', функция использует шрифт, заданный FixedWidthFont свойство объекта Root Properties. Шрифт фиксированной ширины использует значение get(0,'FixedWidthFontName') .

Пометьте размер шрифта в модулях точки в виде разделенной запятой пары, состоящей из 'LabelFontSize' и положительная скалярная величина.

Введенный в R2020b