После подключения MATLAB® к устройству сбора изображений можно просмотреть видеопоток в режиме реального времени с помощью окна Video Preview. Предварительный просмотр данных видео может помочь вам убедиться, что захваченное изображение удовлетворительно.
Для примера, просматривая предпросмотр, можно проверить, что подсветки и особое внимание верны. Если вы изменяете характеристики изображения, с помощью свойств объекта входа видео и объекта источника видео, изображение, отображаемое в окне Video Preview, изменяется, отражая новые настройки свойств.
В следующих разделах приведены дополнительные сведения об использовании окна Video Preview.
Вместо использования окна Video Preview тулбокса, можно отобразить поток предварительного просмотра видео в любой Дескриптивной графике® объект изображения, который вы задаете. Таким образом можно включить предварительный просмотр видео в графический интерфейс пользователя собственного создания. В следующих разделах описывается эта возможность.
Чтобы открыть окно Video Preview, используйте preview
функция. В окне Video Preview отображается видеопоток с устройства. Вы можете открыть только одно окно предварительного просмотра для каждого устройства. Если используется несколько устройств, можно одновременно открыть несколько окон предварительного просмотра.
В следующем примере создается объект входа видео, а затем открывается окно Video Preview для объекта входа видео.
vid = videoinput('winvideo');
preview(vid);
Следующий рисунок показывает окно Video Preview, созданное в этом примере. Окно Video Preview отображает видеопоток в реальном времени. Размер изображения для предварительного просмотра определяется значением ROIPosition
объекта входа видео свойство. Окно Video Preview отображает данные видео с 100% -ным увеличением.
В дополнение к изображению предварительного просмотра окно Video Preview включает в себя информацию об изображении, такую как временная метка видеокадра, разрешение видео, частота систем координат и текущее состояние объекта входа видео.
Примечание
Поскольку форматы видео обычно выражают разрешение как ширину по высоте, окно Video Preview выражает размер системы координат изображения как столбец за строкой, а не стандартный формат строка за столбцом MATLAB.
Примечание
Окно Image Acquisition Toolbox™ Preview и окно Preview, встроенное в Image Acquisition Tool, поддерживают отображение до 16-битных данных изображения. Окно Preview было спроектировано, чтобы показать только 8-битные данные, но многие камеры возвращают 10-, 12-, 14- или 16-битные данные. Окно Preview отображения поддерживает эти камеры более высокой битовой глубины. Однако большие битовые данные масштабируются до 8-битовых с целью отображения предварительно просмотренных данных. Чтобы захватить данные изображения в окне Preview на его полной битовой глубине для полутоновых изображений, установите PreviewFullBitDepth
свойство к 'on'
.
Когда вы используете preview
функция для начала предварительного просмотра данных изображения в окне Video Preview отображается представление видеопотока, поступающего с устройства. Чтобы остановить обновление живого видеопотока, вызовите stoppreview
функция.
Этот пример создает объект входа видео и открывает окно Video Preview. Затем пример вызывает stoppreview
функция на этом объекте входа видео. Окно Video Preview останавливает обновление отображаемого изображения и останавливает обновление временной метки. Состояние, отображаемое в окне Video Preview, также изменяется, что указывает на остановку предварительного просмотра.
vid = videoinput('winvideo');
preview(vid)
stoppreview(vid)
Чтобы перезапустить видеопоток в окне Video Preview, вызовите preview
снова на том же видео входа объекта.
preview(vid)
Чтобы закрыть определенное окно Video Preview, используйте closepreview
функция, задающая объект входа видео как аргумент. Вам не нужно останавливать прямой видеопоток, отображаемый в окне Video Preview, перед его закрытием.
closepreview(vid)
Чтобы закрыть все открытые окна Video Preview, используйте closepreview
функция без аргументов.
closepreview
Примечание
При вызове без аргумента closepreview
функция закрывает только окна Video Preview. The closepreview
функция не закрывает никаких других окон рисунка, в которых вы направляли видеопоток для предварительного просмотра. Для получения дополнительной информации см. раздел «Предварительный просмотр данных в пользовательских графических интерфейсах пользователя».
Вместо использования окна Video Preview тулбокса можно использовать preview
функция для направления live видеопотока к любой Дескриптивной графике изображения объекту. Таким образом, вы можете включить возможность предварительного просмотра тулбокса в графический интерфейс пользователя вашего собственного создания. (Вы также можете выполнить пользовательскую обработку, когда отображается живое видео. Для получения дополнительной информации смотрите Выполнение Пользовательской Обработки Предварительно Просмотренных Данных.)
Чтобы использовать эту возможность, создайте объект изображения и затем вызовите preview
функция, задающая указатель на объект изображения в качестве аргумента. The preview
функция выводит live видеопоток в заданный вами объект изображения.
В следующем примере создается окно рисунка, а затем создается объект изображения на рисунке, такого же размера, как и видеокадры. Затем пример вызывает 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
функция для конфигурирования данных, заданных приложением, в указатель на функцию окна предварительного просмотра обновления, описанную в разделе Создание функции окна предварительного просмотра обновления.
Этот пример расширяет простое пользовательское окно предварительного просмотра, созданное в Previewing Data in Custom GUIs. Этот пример добавляет три кнопки 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
получает видеокадр, вызывает заданную вами функцию окна предварительного просмотра обновлений, которая обновляет текстовую метку временной метки в графическом интерфейсе пользователя.
Пользовательский графический интерфейс пользователя предварительного просмотра с текстовой меткой временной метки