gusucode.com > vision工具箱matlab源码程序 > vision/trainingImageLabeler.m
function trainingImageLabeler(varargin) %trainingImageLabeler Label images for training a classifier. % trainingImageLabeler invokes an app for labeling ground truth data in images. % This app is used to interactively specify rectangular Regions of Interest (ROIs) % that define locations of objects used to train a classifier. It outputs training % data in a format supported by the trainCascadeObjectDetector function which is % used to train a model for vision.CascadeObjectDetector detector. % % trainingImageLabeler(imageFolder) invokes the app and immediately % loads the images from imageFolder. % % trainingImageLabeler(sessionFile) invokes the app and immediately loads a % saved image labeler session. sessionFile is the path to the MAT file % containing the saved session. % % trainingImageLabeler CLOSE closes all open apps. % % See also trainCascadeObjectDetector, vision.CascadeObjectDetector % Copyright 2012 The MathWorks, Inc. shouldOpenSession = false; shouldAddImages = false; issueWarning = false; narginchk(0,1); if nargin == 0 % Create a new Training Data Labeler tool = vision.internal.cascadeTrainer.tool.TrainingDataLabelerTool(); % Render the tool on the screen tool.show(); return; else validateattributes(varargin{1}, {'char'}, {'vector'}, mfilename, 'input name'); % A single argument means either 'close' or load the images from a folder or load a session. if(strcmpi(varargin{1}, 'close')) % Handle the 'close' request vision.internal.cascadeTrainer.tool.TrainingDataLabelerTool.deleteAllTools(); return; elseif exist(varargin{1}, 'dir') % Load images from a folder folder = varargin{1}; folder = vision.internal.getFullPath(folder); imgSet = imageSet(folder); fileNames = imgSet.ImageLocation; if(isempty(fileNames)) % Folder does not contain any valid images issueWarning = true; else shouldAddImages = true; end elseif exist(varargin{1}, 'file') || exist([varargin{1}, '.mat'], 'file') % Load a session sessionFileName = varargin{1}; import vision.internal.calibration.tool.*; [sessionPath, sessionFileName] = parseSessionFileName(sessionFileName); shouldOpenSession = true; else error(message('vision:trainingtool:InvalidInput',varargin{1})); end end % Create a new Training Data Labeler tool = vision.internal.cascadeTrainer.tool.TrainingDataLabelerTool(); tool.show(); if issueWarning warndlg(... getString(message('vision:trainingtool:NoImagesFoundMessage',folder)),... getString(message('vision:uitools:NoImagesAddedTitle')),'modal'); elseif shouldAddImages addImagesToSession(tool, fileNames); elseif shouldOpenSession processOpenSession(tool, sessionPath, sessionFileName,false); end end