exponenta event banner

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

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

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

Определяется в координатах пикселей как 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 перед поворотом.

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

Square rectangle rotated by -30 degrees.

Cuboid

Определяется в пространственных координатах как 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 указывают центр окружности.

  • радиус определяет радиус окружности.

Line

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

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

  • [x1 y1], [x2 y2] и xP xP описывают конечные точки .

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

Polygon

Определяется в пространственных координатах как массив M-by-1 ячеек, в котором каждая ячейка содержит матрицу L-by-2 с расположениями вершин [x y] или вектор 1-by-2L с последовательными расположениями вершин вида [x1, y1, x2, y2,... xL, yL], где:

  • M - число многоугольников.

  • [x1 y1], [x2 y2] описывают расположение вершин или конечных точек.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Представлен в R2020b