Этот пример показывает, как настроить и отобразить живую гистограмму.
Image Acquisition Toolbox™ вместе с Image Processing 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;
Задайте функцию обратного вызова 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