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

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

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

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

  • 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