В этом примере показано, как настроить и отобразить живую гистограмму.
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