exponenta event banner

Дисплей видео с живой гистограммой

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

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

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

  • MATLABROOT\toolbox\imaq\imaqdemos\helper

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

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

Настройка видеообъекта и рисунка

% 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;

Укажите функцию обратного вызова StartPreviewWindowFcn, которая вызывается каждый раз, когда доступен новый кадр. Функция обратного вызова отвечает за отображение новых кадров и обновление гистограммы. Он также может использоваться для применения пользовательской обработки к кадрам. Более подробную информацию об использовании этого обратного вызова можно найти в документации для функции 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