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