Отображение видео с Live Histogram

В этом примере показано, как настроить и отобразить живую гистограмму.

Image Acquisition Toolbox™ вместе с Image Processing Toolbox™ могут использоваться для отображения видеопотока с живой гистограммой. Это может быть полезно при калибровке настроек камеры, таких как апертура с помощью ручного управления. В этом примере показано, как использовать функцию PREVIEW, связанную с ней пользовательскую функцию обновления и функцию IMHIST для размещения окна предварительного просмотра видео рядом с live-гистограммой. Методы здесь могут использоваться, чтобы отобразить другую живую информацию также. Например, прямая видеотрансляция может быть помещена рядом с отфильтрованной версией видео.

Этот пример использует функцию обратного вызова, найденную в

  • MATLABROOT\toolbox\imaq\imaqdemos\helper

директория, который отображает живую гистограмму в окне рисунка.

Смотрите клип видеопотока и гистограммы. (8 секунд)

Setup объекта видео и фигуры

% Access an image acquisition device.
vidobj = videoinput('winvideo');

% Convert the input images to grayscale.
vidobj.ReturnedColorSpace = 'grayscale';

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

% Retrieve the video resolution.
vidRes = vidobj.VideoResolution;

% Create a figure and an image object.
f = figure('Visible', 'off');

% The Video Resolution property returns values as width by height, but
% MATLAB images are height by width, so flip the values.
imageRes = fliplr(vidRes);

subplot(1,2,1);

hImage = imshow(zeros(imageRes));

% Set the axis of the displayed image to maintain the aspect ratio of the
% incoming frame.
axis image;

Задайте функцию обратного вызова UpdatePreviewWindowFcn, которая вызывается каждый раз, когда доступна новая система координат. Функция обратного вызова отвечает за отображение новых систем координат и обновление гистограммы. Он также может использоваться, чтобы применить пользовательскую обработку к системам координат. Дополнительные сведения о том, как использовать этот коллбэк, см. в документации для функции PREVIEW. Сама эта функция обратного вызова определяется в файле update_livehistogram_display.m

setappdata(hImage,'UpdatePreviewWindowFcn',@update_livehistogram_display);

Определите функцию обратного вызова

% Here are the contents of update_livehistogram_display.m which contains
% the callback function.
dbtype('update_livehistogram_display.m')
1     function update_livehistogram_display(obj,event,hImage)
2     % This callback function updates the displayed frame and the histogram.
3
4     % Copyright 2007-2017 The MathWorks, Inc.
5     %
6
7     % Display the current image frame.
8     set(hImage, 'CData', event.Data);
9
10    % Select the second subplot on the figure for the histogram.
11    subplot(1,2,2);
12
13    % Plot the histogram. Choose 128 bins for faster update of the display.
14    imhist(event.Data, 128);
15
16    % Refresh the display.
17    drawnow

Запуск предварительного просмотра

% The PREVIEW function starts the camera and display. The image on which to
% display the video feed is also specified.
preview(vidobj, hImage);

% View the histogram for 30 seconds.
pause(30);

Выше приведен пример изображения гистограммы и видеопотока.

% Stop the preview image and delete the figure.
stoppreview(vidobj);
delete(f);

Когда объект входа видео больше не нужен, удалите и очистите связанную переменную.

delete(vidobj)
clear vidobj