Обработка веб-камеры в реальном времени в Matlab - PullRequest
2 голосов
/ 07 мая 2011

Может ли кто-нибудь указать мне несколько примеров обработки веб-камеры в Matlab в режиме реального времени?В Интернете есть несколько учебных пособий / примеров того, как получить изображение с веб-камеры, а затем обработать это изображение, но я смотрю на манипуляцию видео-трансляцией с веб-камеры в реальном времени.

Ответы [ 2 ]

5 голосов
/ 09 мая 2011

http://www.mathworks.com/videos/solving-a-sudoku-puzzle-using-a-webcam-68773.html

Об этом видео: используйте веб-камеру USB для читать в судоку головоломки и изображения обработка для извлечения данных из него. Затем решите головоломку с помощью простого численный алгоритм и наложение решение по оригинальной видео подаче.

"SUDOKU" является зарегистрированным товарным знаком NIKOLI Co., Ltd. (Япония)

[Правка - обновлена ​​ссылка на видео]

1 голос
/ 15 мая 2014

Пример, который дал Ашиш, охватывает все, что вам нужно знать.

Вот подмножество этого примера только с видео. По сути, вы должны сделать цикл с попыткой catch. Цикл получает кадры из obj (видеообъекта), обрабатывает и отображает их, рисуя прямо на холсте imshow.

Try-catch используется, когда пользователь закрывает окно рисунка, вызывая исключение, которое вызывает предложение catch - остановка захвата и освобождение камеры (чтобы другие программы могли использовать ее)

function sudokuvideo_fn()
% Reset everything, and start capturing
imaqreset
% The format need to fit to your camera. The easiest way to check this is  
% to check out the Image Aquisition app
obj = videoinput('winvideo',1,'MJPG_640x480');

try   
    %Initialize various parameters, and load in the template data
    set(obj,'framesperTrigger',10,'TriggerRepeat',Inf);
    start(obj);

    % h is a handle to the canvas
    h = imshow(zeros(480,640));
    hold on;

    figure(1);

    while islogging(obj);              
        colorImage = getdata(obj,1);
        %Icam = imread('sample.bmp'); %<--- For debugging

        % This line depends on the format you're using (YUV / RGB)
        %Icam = IcamColor(:,:,1);
        Icam = rgb2gray(colorImage);       
        flushdata(obj);

        bwthresh = 1.2;
        %% Processing comes here - Do whatever you wish
%         %Block processed threshhold
%         makebw2 = @(I) im2bw(I.data,median(double(I.data(:)))/bwthresh/255);
%         IBW = ~blockproc(I0,[blksize blksize],makebw2);       
        IBW = im2bw(Icam, bwthresh / 255);

        % Noise reduction and border elimination
        I = IBW;
%         IBW = imclose(IBW,[1 1; 1 1]);
%         I = IBW;
        I = bwareaopen(I, blobthresh);
%         I = imclearborder(I);

        %% This is what paints on the canvas
        set(h,'Cdata',I);
        drawnow;
    end

catch err
    % This attempts to take care of things when the figure is closed
    stop(obj);
    imaqreset
    disp('Cleaned up')
    rethrow(err);
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...