После того, как вы соедините MATLAB® с устройством получения изображений, можно просмотреть живой видеопоток с помощью Окна просмотра видео. Предварительный просмотр видеоданных может помочь вам убедиться, что получаемое изображение является удовлетворительным.
Например, путем рассмотрения предварительного просмотра, можно проверить, что подсветка и особое внимание правильны. Если вы изменяете характеристики изображения, при помощи объекта ввода видео и свойств объектов источника видеосигнала, изображение, отображенное в Окне просмотра видео, изменяется, чтобы отразить новые настройки свойства.
Следующие разделы предоставляют больше информации об использовании Окна просмотра видео.
Вместо того, чтобы использовать Окно просмотра видео тулбокса, можно отобразить живой поток предварительного просмотра видео в любом объекте изображения Handle Graphics®, который вы задаете. Таким образом можно включать предварительный просмотр видео в графический интерфейс пользователя собственного создания. Следующие разделы описывают эту возможность.
Примечание
Окно Image Acquisition Toolbox™ Preview и окно Preview, которое встроено в Image Acquisition Tool, поддерживают отображение до 16-битных данных изображения. Окно Preview было спроектировано, чтобы только показать 8-битные данные, но много камер возвращаются 10-, 12-, 14-, или 16-битные данные. Отображение окна Preview поддерживает эти более высокие камеры битовой глубины. Однако большие битные данные масштабируются к 8-битному в целях отображения предварительно просмотренных данных. Если вам нужно полное разрешение данных, используйте getsnapshot
или getdata
функции.
Чтобы открыть Окно просмотра видео, используйте preview
функция. Окно просмотра видео отображает живой видеопоток от устройства. Можно только открыть одно окно предварительного просмотра для каждого устройства. Если несколько устройств используются, можно открыть несколько окон предварительного просмотра одновременно.
Следующий пример создает объект ввода видео и затем открывает Окно просмотра видео для объекта ввода видео.
vid = videoinput('winvideo');
preview(vid);
Следующий рисунок показывает Окно просмотра видео, созданное этим примером. Окно просмотра видео отображает живой видеопоток. Размер изображения предварительного просмотра определяется значением объекта ввода видео ROIPosition
свойство. Окно просмотра видео отображает видеоданные при 100%-м увеличении.
В дополнение к изображению предварительного просмотра Окно просмотра видео включает информацию об изображении, таком как метка времени видеокадра, разрешения видео, частоты кадров и текущего статуса объекта ввода видео.
Примечание
Поскольку форматы видео обычно специальное разрешение как ширина высотой, Окно просмотра видео описывает размер фрейма изображения как столбец строкой, а не стандартная строка форматом столбца MATLAB.
Примечание
Окно Image Acquisition Toolbox Preview и окно Preview, которое встроено в Image Acquisition Tool, поддерживают отображение до 16-битных данных изображения. Окно Preview было спроектировано, чтобы только показать 8-битные данные, но много камер возвращаются 10-, 12-, 14-, или 16-битные данные. Отображение окна Preview поддерживает эти более высокие камеры битовой глубины. Однако большие битные данные масштабируются к 8-битному в целях отображения предварительно просмотренных данных. Если вам нужно полное разрешение данных, используйте getsnapshot
или getdata
функции.
Когда вы используете preview
функционируйте, чтобы начать предварительно просматривать данные изображения, Окно просмотра видео отображает представление живого видеопотока, прибывающего из устройства. Чтобы остановить обновление живого видеопотока, вызовите stoppreview
функция.
Этот пример создает объект ввода видео и открывает Окно просмотра видео. Пример затем вызывает stoppreview
функция на этом объекте ввода видео. Окно просмотра видео прекращает обновлять отображенное изображение и прекращает обновлять метку времени. Состояние, отображенное в Окне просмотра видео также, изменяется, чтобы указать, что предварительный просмотр был остановлен.
vid = videoinput('winvideo');
preview(vid)
stoppreview(vid)
Чтобы перезапустить видеопоток в Окне просмотра видео, вызовите preview
снова на том же объекте ввода видео.
preview(vid)
Чтобы закрыть конкретное Окно просмотра видео, используйте closepreview
функция, задавая ввод видео возражает в качестве аргумента. Вы не должны останавливать живой видеопоток, отображенный в Окне просмотра видео прежде, чем закрыть его.
closepreview(vid)
Чтобы закрыть все в настоящее время открытые Окна просмотра видео, используйте closepreview
функция без любых аргументов.
closepreview
Примечание
Когда названо без аргумента, closepreview
функционируйте только закрывает Окна просмотра видео. closepreview
функция не закрывает никакие другие окна рисунка, в которых вы направили видеопоток предпросмотра в реальном времени. Для получения дополнительной информации смотрите Предварительно просматривающие Данные в Пользовательских графический интерфейсах пользователя.
Вместо того, чтобы использовать Окно просмотра видео тулбокса, можно использовать preview
функционируйте, чтобы направить живой видеопоток к любому объекту изображения Дескриптивной графики. Таким образом можно включить возможность предварительного просмотра тулбокса в графический интерфейс пользователя собственного создания. (Можно также выполнить пользовательскую обработку, когда живое видео отображено. Для получения информации смотрите Выполняющую Пользовательскую Обработку Предварительно просмотренных Данных.)
Чтобы использовать эту возможность, создайте объект изображения и затем вызовите preview
функция, задавая указатель на объект изображения в качестве аргумента. preview
функционируйте выводит живой видеопоток к объекту изображения, который вы задаете.
Следующий пример создает окно рисунка и затем создает объект изображения на рисунке, тот же размер как видеокадры. Пример затем вызывает preview
функция, задавая указатель на объект изображения.
% Create a video input object. vid = videoinput('winvideo'); % Create a figure window. This example turns off the default % toolbar, menubar, and figure numbering. figure('Toolbar','none',... 'Menubar', 'none',... 'NumberTitle','Off',... 'Name','My Preview Window'); % Create the image object in which you want to display % the video preview data. Make the size of the image % object match the dimensions of the video frames. vidRes = vid.VideoResolution; nBands = vid.NumberOfBands; hImage = image( zeros(vidRes(2), vidRes(1), nBands) ); % Display the video data in your GUI. preview(vid, hImage);
Когда вы запускаете этот пример, он создает графический интерфейс пользователя, показанный в следующем рисунке.
Пользовательский предварительный просмотр
Когда вы задаете объект изображения к preview
функция (см. Предварительно просматривающие Данные в Пользовательских графический интерфейсах пользователя), можно опционально также задать функцию что preview
выполняется каждый раз, когда это получает фрейм изображения.
Чтобы использовать эту возможность, выполните эти шаги:
Создайте функцию, которую вы хотите выполняемый для каждого фрейма изображения, вызвал функцию окна предварительного просмотра обновления. Для получения информации об этой функции смотрите Создание Функции Окна Предварительного просмотра Обновления.
Создайте объект изображения.
Сконфигурируйте значение 'UpdatePreviewWindowFcn'
объекта изображения заданные приложением данные, чтобы быть указателем на функцию к вашей функции окна предварительного просмотра обновления. Для получения дополнительной информации смотрите Определение Функции Предварительного просмотра Обновления.
Вызовите preview
функция, задавая указатель объекта изображения в качестве аргумента.
Примечание
Если вы указываете, что функция окна предварительного просмотра обновления, в дополнение к любой обработке вашей функции выполняет, это должно отобразить видеоданные в объекте изображения. Можно сделать это путем обновления CData
из объекта изображения с входящими видеокадрами. Для некоторых инструкций по эффективности об обновлении данных, отображенных в объекте изображения, смотрите 1-1B022 Техническое решение.
Когда preview
вызывает функцию окна предварительного просмотра обновления, которую вы задаете, она передает вашу функцию следующие аргументы.
Аргумент | Описание | |
---|---|---|
| Обработайте к предварительно просматриваемому объекту ввода видео | |
| Структура данных, содержащая следующие поля: | |
| Система координат текущего изображения, заданная как H W B массивом, где H является высотой изображения и W, является шириной изображения, как задано в | |
| Вектор символов, задающий ширину текущего изображения и высоту, как задано | |
| Вектор символов, описывающий состояние объекта ввода видео | |
| Вектор символов, задающий время, сопоставленное с системой координат текущего изображения, в формате | |
| Вектор символов, задающий текущую частоту кадров ввода видео, возражает в кадрах в секунду | |
| Обработайте к объекту изображения, в котором должны быть отображены данные |
Следующий пример создает функцию окна предварительного просмотра обновления, которая отображает метку времени каждого входящего видеокадра как текстовая метка в пользовательском графический интерфейсе пользователя. Функция окна предварительного просмотра обновления использует getappdata
получать указатель на текстовую метку uicontrol
объект из заданных приложением данных в объекте изображения. Пользовательский графический интерфейс пользователя хранит этот указатель на текстовую метку uicontrol
объект — видит Определение Функции Предварительного просмотра Обновления.
Обратите внимание на то, что функция окна предварительного просмотра обновления также отображает видеоданные путем обновления CData
из объекта изображения.
function mypreview_fcn(obj,event,himage) % Example update preview window function. % Get timestamp for frame. tstampstr = event.Timestamp; % Get handle to text label uicontrol. ht = getappdata(himage,'HandleToTimestampLabel'); % Set the value of the text label. ht.String = tstampstr; % Display image data. himage.CData = event.Data
Чтобы использовать функцию окна предварительного просмотра обновления, сохраните указатель на функцию к своей функции в 'UpdatePreviewWindowFcn'
заданные приложением данные объекта изображения. Следующий пример использует setappdata
функция, чтобы сконфигурировать эти заданные приложением данные к указателю на функцию к функции окна предварительного просмотра обновления, описанной в Создании Функции Окна Предварительного просмотра Обновления.
Этот пример расширяет простое пользовательское окно предварительного просмотра, созданное в Предварительно просматривании Данных в Пользовательских графический интерфейсах пользователя. Этот пример добавляет три кнопки uicontrol
объекты к графический интерфейсу пользователя: Запустите Предварительный просмотр, Предварительный просмотр Остановки, и закройте Предварительный просмотр.
Кроме того, чтобы проиллюстрировать использование функции окна предварительного просмотра обновления, графический интерфейс пользователя в качестве примера включает текстовую метку uicontrol
возразите, чтобы отобразить значение метки времени. Функция окна предварительного просмотра обновления обновляет эту текстовую метку каждый раз, когда обрамленное получено. Пример использует setappdata
сохранить указатель на текстовую метку uicontrol
объект в заданных приложением данных в объекте изображения. Функция окна предварительного просмотра обновления получает этот указатель, чтобы обновить отображение метки времени.
% Create a video input object. vid = videoinput('winvideo'); % Create a figure window. This example turns off the default % toolbar and menubar in the figure. hFig = figure('Toolbar','none',... 'Menubar', 'none',... 'NumberTitle','Off',... 'Name','My Custom Preview GUI'); % Set up the push buttons uicontrol('String', 'Start Preview',... 'Callback', 'preview(vid)',... 'Units','normalized',... 'Position',[0 0 0.15 .07]); uicontrol('String', 'Stop Preview',... 'Callback', 'stoppreview(vid)',... 'Units','normalized',... 'Position',[.17 0 .15 .07]); uicontrol('String', 'Close',... 'Callback', 'close(gcf)',... 'Units','normalized',... 'Position',[0.34 0 .15 .07]); % Create the text label for the timestamp hTextLabel = uicontrol('style','text','String','Timestamp', ... 'Units','normalized',... 'Position',[0.85 -.04 .15 .08]); % Create the image object in which you want to % display the video preview data. vidRes = vid.VideoResolution; imWidth = vidRes(1); imHeight = vidRes(2); nBands = vid.NumberOfBands; hImage = image( zeros(imHeight, imWidth, nBands) ); % Specify the size of the axes that contains the image object % so that it displays the image at the right resolution and % centers it in the figure window. figSize = get(hFig,'Position'); figWidth = figSize(3); figHeight = figSize(4); gca.unit = 'pixels'; gca.position = [ ((figWidth - imWidth)/2)... ((figHeight - imHeight)/2)... imWidth imHeight ]; % Set up the update preview window function. setappdata(hImage,'UpdatePreviewWindowFcn',@mypreview_fcn); % Make handle to text label available to update function. setappdata(hImage,'HandleToTimestampLabel',hTextLabel); preview(vid, hImage);
Когда вы запускаете этот пример, он создает графический интерфейс пользователя, показанный в следующем рисунке. Каждый раз preview
получает видеокадр, он вызывает функцию окна предварительного просмотра обновления, которую вы задали, который обновляет текстовую метку метки времени в графический интерфейсе пользователя.
Пользовательский графический интерфейс пользователя предварительного просмотра с текстовой меткой метки времени