⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 takevideoandplaymovie.m

📁 This program takes a video from camera and break it into frames
💻 M
字号:
function varargout = TakeVideoAndPlayMovie(varargin)% This program uses Image Acquisition toolbox to take video at any time% length as user defined.  The function imaqtool has the limitation in taking% long duration videos.  % By Jax Cao % February 2008% TAKEVIDEOANDPLAYMOVIE M-file for TakeVideoAndPlayMovie.fig%      TAKEVIDEOANDPLAYMOVIE, by itself, creates a new TAKEVIDEOANDPLAYMOVIE or raises the existing%      singleton*.%%      H = TAKEVIDEOANDPLAYMOVIE returns the handle to a new TAKEVIDEOANDPLAYMOVIE or the handle to%      the existing singleton*.%%      TAKEVIDEOANDPLAYMOVIE('CALLBACK',hObject,eventData,handles,...) calls the local%      function named CALLBACK in TAKEVIDEOANDPLAYMOVIE.M with the given input arguments.%%      TAKEVIDEOANDPLAYMOVIE('Property','Value',...) creates a new TAKEVIDEOANDPLAYMOVIE or raises the%      existing singleton*.  Starting from the left, property value pairs are%      applied to the GUI before TakeVideoAndPlayMovie_OpeningFcn gets called.  An%      unrecognized property name or invalid value makes property application%      stop.  All inputs are passed to TakeVideoAndPlayMovie_OpeningFcn via varargin.%%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one%      instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help TakeVideoAndPlayMovie% Last Modified by GUIDE v2.5 24-Feb-2008 21:31:51% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',       mfilename, ...                   'gui_Singleton',  gui_Singleton, ...                   'gui_OpeningFcn', @TakeVideoAndPlayMovie_OpeningFcn, ...                   'gui_OutputFcn',  @TakeVideoAndPlayMovie_OutputFcn, ...                   'gui_LayoutFcn',  [] , ...                   'gui_Callback',   []);if nargin && ischar(varargin{1})    gui_State.gui_Callback = str2func(varargin{1});endif nargout    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else    gui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before TakeVideoAndPlayMovie is made visible.function TakeVideoAndPlayMovie_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject    handle to figure% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% varargin   command line arguments to TakeVideoAndPlayMovie (see VARARGIN)% Choose default command line output for TakeVideoAndPlayMoviedelete('*asv');handles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes TakeVideoAndPlayMovie wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = TakeVideoAndPlayMovie_OutputFcn(hObject, eventdata, handles) % varargout  cell array for returning output args (see VARARGOUT);% hObject    handle to figure% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes on button press in MovieSetupPushButton.function MovieSetupPushButton_Callback(hObject, eventdata, handles)% hObject    handle to MovieSetupPushButton (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Choose default command line output for TakeVideoAndPlayMovie% This function determine which device is available and return appropriate% paramters% determine the camera divice IDimaqreset;infom = imaqhwinfo;for k = 1:length(infom.InstalledAdaptors)    info = imaqhwinfo(infom.InstalledAdaptors{k});    if ~isempty(info.DeviceIDs)        Installedadaptor = infom.InstalledAdaptors{k};        break;    endendif ~exist('Installedadaptor', 'var')    h = warndlg('Video camera not connected !','!! Warning !!', 'replace');    pause (5);     if ishandle(h), close (h); end; beep;    return;end% user input camera and video directoryprompt={'Enter the video directory name:',...        'Enter the video filename prefix:', ...        'Enter the video total length (seconds): ', ...        'Enter the adaptorname: ', ...        'Enter the frames per trigger: ', ...        'Enter the time length (seconds) for each section', ...        'Enter the device ID (the maximum should be the total number of cameras connected): '};name='Input for video setup';numlines=1;defaultanswer={'c:/tempfiles/videotest/','myvedio', '400', Installedadaptor, '1500', ...    '10', '1'};options.Resize='on';options.WindowStyle='normal';options.Interpreter='tex';answer=inputdlg(prompt,name,numlines,defaultanswer, options);handles.loopnumber = ceil(str2double(answer{3})/str2double(answer{6}));handles.directory = answer{1};handles.filenameprefix = answer{2}; handles.adaptorname = answer{4};handles.framepertrigger = str2double(answer{5});handles.sectiontime = str2double(answer{6});handles.deviceID = str2double(answer{7});if ~exist(handles.directory , 'dir')    mkdir(handles.directory); else    rmdir(handles.directory, 's');    mkdir(handles.directory); end;info = imaqhwinfo(answer{4}, handles.deviceID);[s,v] = listdlg('PromptString','Select a format:',...    'SelectionMode','single',...    'ListString',info.SupportedFormats);if v     handles.format = info.SupportedFormats{s}; else    h = warndlg('Video format not selected, redo the work','!! Warning !!');    pause (5);     if ishandle(h), close (h); end;end            beep;handles.output = hObject;% Update handles structureguidata(hObject, handles);% --- Executes on button press in TakeVideoPushButton.function TakeVideoPushButton_Callback(hObject, eventdata, handles)% hObject    handle to TakeVideoPushButton (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Choose default command line output for TakeVideoAndPlayMovieif ~isfield(handles, 'format')    h = warndlg('Video setting is not ready,  redo it','!! Warning !!');    pause (5);     if ishandle(h), close (h); end;    beep;  return;endif isfield(handles, 'vid')    h = warndlg('Video in preview mode stop preview first!','!! Warning !!');    pause (5);     if ishandle(h), close (h); end;    beep; return;end% the following sections takes video according to the time specified by the% userk = 1;while 1    my_log = [handles.directory  handles.filenameprefix num2str(k) '.avi'];    aviobj = avifile(my_log, 'compression', 'None');        vid = videoinput(handles.adaptorname,handles.deviceID, handles.format);        vid.LoggingMode = 'disk&memory';    vid.DiskLogger = aviobj;    vid.TriggerRepeat = Inf;        set(vid,'FramesPerTrigger', handles.framepertrigger)        start(vid);    pause (handles.sectiontime)    aviobj = close(vid.DiskLogger);      flushdata(vid)    delete(vid); clear vid;    clear my_log;        k = k +1;    if k > handles.loopnumber, break; end;endbeep;% update handleshandles.output = hObject;% Update handles structureguidata(hObject, handles);% --- Executes on button press in PlayMoviePushButton.function PlayMoviePushButton_Callback(hObject, eventdata, handles)% hObject    handle to PlayMoviePushButton (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% This function plays the recorded videos.  However, it is recommended to% use the windows movie maker to play the number of recorded videos% exceeding 5.if ~isfield(handles, 'format')    h = warndlg('Video setting is not ready, redo it','!! Warning !!');    pause (5);     if ishandle(h), close (h); end;    beep; return;endif isempty(ls([handles.directory, '*avi']))    h = warndlg('Video not take yet, take video first!!!','!! Warning !!');    pause (5);     if ishandle(h), close (h); end;    beep; return;endh = warndlg(['May be very slow, and it is suggested using Windows Move Maker' ...    'to view the movie over 30 seconds!!'],'!! Warning !!');pause (5); if ishandle(h), close (h); end;axes(handles.movieshow)% mov = cell(1, loopnumber);for k=1:handles.loopnumber    mov = aviread([handles.directory  handles.filenameprefix num2str(k) '.avi']);        movie(mov);    clear movendbeep;% --- Executes on button press in Previewpushbutton.function Previewpushbutton_Callback(hObject, eventdata, handles)% hObject    handle to Previewpushbutton (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)if ~isfield(handles, 'format')    h = warndlg('Video setting is not ready,  redo it','!! Warning !!');    pause (5);     if ishandle(h), close (h); end;    beep;     return;endhandles.vid = videoinput(handles.adaptorname,handles.deviceID, handles.format);% update handleshandles.output = hObject;% Update handles structureguidata(hObject, handles);vidRes = get(handles.vid, 'VideoResolution');nBands = get(handles.vid, 'NumberOfBands');hImage = image( zeros(vidRes(2), vidRes(1), nBands) );preview(handles.vid, hImage);beep;% --- Executes on button press in StopPreviewpushbutton.function StopPreviewpushbutton_Callback(hObject, eventdata, handles)% hObject    handle to StopPreviewpushbutton (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% This function stops the video previewif ~isfield(handles, 'format') || ~isfield(handles, 'vid')    h = warndlg('Video setting is not ready or preview not started!','!! Warning !!');    pause (5);    if ishandle(h), close (h); end;    beep; return;endclosepreview(handles.vid)handles = rmfield(handles, 'vid'); clear handles.vid;beep;% update handleshandles.output = hObject;% Update handles structureguidata(hObject, handles);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -