2014-06-10 4 views
1

Я пытаюсь нарисовать тонкую красную линию вдоль темной палки от края до зеленой точки движущейся части, которую я нашел раньше на видео. Я обрабатываю видео кадр за кадром.Как нарисовать линию на видеокадре в MATLAB

Я могу найти две точки (начальную и конечную точки), но я застрял, как сделать две точки и точки между ними красной линейно.

, например

для текущего кадра в кадре координат верхней точки 45 вниз и 237 вправо от верхних левого (0,0) угла и зеленая точка координата 231 вниз и 238 вправо из левого верхнего угла.

Так что мне нужно нарисовать линию от (237,45) до (231,238).

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

enter image description here

+0

Вы можете реализовать линейный алгоритм Брешенема http://en.wikipedia.org/wiki/Bresenham's_line_algorithm. Я узнал об этом, прочитав комментарии в библиотеке Adafruit GFX. Https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Adafruit_GFX.cpp#L162 – dpwe

+1

Можно ли использовать команду 'line' рисовать внутри этой фигуры? – rayryeng

ответ

1

К сожалению, вы не можете использовать графические команды дескриптора на vision.VideoPlayer. Однако есть функция insertShape, которая позволяет вам рисовать непосредственно в изображении, прежде чем отображать его.

+0

. Функция insertShape была предложена с R2013. Я использую 2012a. – zkanoca

+1

В этом случае вы можете использовать объект vision.ShapeInserter. – Dima

0
imshow(image_name); 
hold on 
[n, m] = imsize(image_name); 
plot([231 237], [n-238, n-45], 'r'); 

Это должно использовать стандартный инструмент построения графиков для построения непосредственно на изображение. вам нужно использовать n-значение, так как изображения используют верхний левый как (0,0), где график использует нижний левый. команда plot просто отображает массив из двух точек, который он автоматически присоединяется к строке. Вы можете напрямую редактировать пиксели, но находить, какие пиксели редактировать, а затем сохранять их аккуратно, действительно действительно беспорядочно

+0

Это хорошее предложение. Но я хочу изменить значения пикселей на красный цвет [1 0 0], а не добавлять дополнительную форму. – zkanoca

+0

Юо может использовать что-то вроде 'a = getframe()', чтобы захватить рамку графика и вставить его обратно в ваше изображение с помощью функции 'a.cdata' – Mauvai

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