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)

Figure contains an axes. The axes contains an object of type image.

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

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)

Figure contains an axes. The axes contains an object of type scatter.

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

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

Figure Point Cloud Player contains an axes. The axes contains an object of type scatter.

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

свернуть все

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

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

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

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

Определенный в пикселе координирует как <reservedrangesplaceholder4>-by-4 числовая матрица со строками формы [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>], где:

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

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

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

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

Повернутый прямоугольник

Определенный в пространственных координатах как <reservedrangesplaceholder5>-by-5 числовая матрица со строками формы [<<reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reserved angesplaceholder0>] , где:

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

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

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

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

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

Square rectangle rotated by -30 degrees.

Cuboid

Определенный в пространственных координатах как <reservedrangesplaceholder9>-by-9 числовая матрица со строками формы [<<reservedrangesplaceholder8> <reservedrangesplaceholder7> <reservedrangesplaceholder6> <reservedrangesplaceholder5> <reserved angesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplace holder0>] , где:

  • 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 -на 3 с строками вида [xctr yctr radius], где:

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

  • xctr и yctr определяют центр окружности.

  • radius задает радиус окружности.

Line

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

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

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

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

Polygon

Заданный в пространственных координатах как M-на-1 массив ячеек, в котором каждая ячейка содержит L-на-2 матрицу [x y] местоположений вершин или 1 на 2 L вектор последовательных расположений вершин вида [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 элемент ячеек-element из векторов символов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Введенный в R2020b