получить ввод с клавиатуры при отображении AVI с Matlab - PullRequest
0 голосов
/ 19 января 2011

Привет всем
Я написал короткую программу, которая отображает AVI-файл. Мне нужна программа, чтобы получить ввод с клавиатуры во время работы фильма (а не после его окончания): это мой код:

цифра ( 'MenuBar', 'ни')
набор (gcf, 'Color', 'white')
набор (GCA, 'Цвет', 'белый');
набор (GCA, 'Xcolor', 'белый');
Набор (GCA, 'YColor', 'белый');
т = aviread ( 'C: /t1.avi')
а = 30: 1: 100;
б = 100: 1: 30;
c = [a b a b a b a b a b]% для запуска фильма вперед и назад
фильм (м, в)% запускает фильм

Спасибо за любую помощь
Ариэль

Ответы [ 4 ]

1 голос
/ 19 января 2011

Возможно, вы можете вставить свое видео в UIPanel (или другой подходящий элемент графического интерфейса) и использовать обратный вызов KeyPressFcn. Посмотрите на это: Последовательность и прерывание обратного вызова (я не знаю, может ли это сработать, но, вероятно, стоит попробовать).

0 голосов
/ 19 января 2011

решение заключается в использовании winopen ('c: /filename.avi')

winopen ( 'C: /filename.avi')
эта команда открывает медиаплеер и запускает следующие команды в сценарии matlab. это не ждет конца фильма. он работает в фоновом режиме.
спасибо всем
Ariel

0 голосов
/ 19 января 2011

Если movie() не был разработан для наблюдения за вводом, я думаю, вам придется многопоточность, что из одного из других ответов звучит немного сложно.

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

0 голосов
/ 19 января 2011

Насколько я знаю, возможности многопоточности или параллельной обработки в MATLAB ограничены;Однако, похоже, что есть средства правовой защиты. В этой статье описывается объединение кода MATLAB и C ++ с использованием MEX-файлов.

Теперь я должен признать, что никогда не пробовал этого, поэтому я не могу утверждать, что это сработает в вашем случае, но это было бы хорошим началом

...