【顏色識別】基於matlab機器視覺顏色識別系統【含Matlab原始碼 588期】
阿新 • • 發佈:2021-06-26
一、簡介
基於matlab 機器視覺顏色識別系統
二、原始碼
function varargout = maingui(varargin) % MAINGUI M-file for maingui.fig % MAINGUI, by itself, creates a new MAINGUI or raises the existing % singleton*. % % H = MAINGUI returns the handle to a new MAINGUI or the handle to % the existing singleton*. % % MAINGUI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in MAINGUI.M with the given input arguments. % % MAINGUI('Property','Value',...) creates a new MAINGUI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before maingui_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to maingui_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 maingui % Last Modified by GUIDE v2.5 03-Mar-2008 14:56:06 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @maingui_OpeningFcn, ... 'gui_OutputFcn', @maingui_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if 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 maingui is made visible. function maingui_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 maingui (see VARARGIN) % warning off; splash('thirdeye.kon','png'); axes(handles.axes2); %initialise axes where color will be displayed img = im2uint8(zeros([128 128 3])); %set it to black color initially handles.h2 = image(img); axis off; axes(handles.axes1);%initialise axes where preview will be displayed axis off; drawnow; axes(handles.axes1); handles.h1 = imshow(im2uint8(ones([240 320 3])));%intial white colored image on the axis try %intialise sound card for sound alert [y,Fs] = wavread('warning.wav');% read a warning wave file handles.player = audioplayer(y, Fs); catch %if sound card not present display following error message errstr = lasterr; h2 = errordlg(['Sound Card Not Present OR ' errstr] ,'Sound Card Error'); setWindowOnTop(h2,'true'); end handles.guifig = gcf; try if exist('startupdata.mat','file') %load startup data. This contains information about initial conditions set. If not found GUI will load its default values load startupdata set(handles.animation,'Checked',animation); set(handles.sound_alert,'Checked',sound_alert); set(handles.auto_hide,'Checked',auto_hide); set(handles.on_top,'Checked',on_top); if strcmp(get(handles.on_top,'Checked'),'on') setWindowOnTop(handles.guifig,'true'); end end catch errordlg(lasterr); end handles.displayperiod = 2; %pause for the amount specified handles.tmr = timer('TimerFcn', {@TmrFcn,handles.guifig},'BusyMode','Queue',... 'ExecutionMode','fixedRate','Period',0.1);%intialise a Timer Function guidata(handles.guifig, handles); % Choose default command line output for maingui handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes maingui wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = maingui_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 structure varargout{1} = handles.output; % ---Executes on Timer Event function TmrFcn(src,event,handles) handles = guidata(handles); pause(handles.displayperiod);%pause for the number of seconds intialised initially str = [pwd '\product images'];%product images stored here names = dir([str '\*.jpg']); rand_num = random_integer_generator(1,numel(names),1);%generates a random number from the number of JPG files present in the product directory handles.reference_image = imread([str '\' names(rand_num,1).name]);% reads any one random image drawnow; set(handles.h1,'CData',handles.reference_image);% displays the randome image on the axis if strcmp(get(handles.auto_hide,'Checked'),'on') setWindowState(handles.guifig,'restore'); %sets the gui figure to restore drawnow; end if isfield(handles,'second') %the color from first variable is stored in variable second. Not true while startup if ~strcmp(handles.first,'NOCOLOR') handles.second = handles.first; end end %%%%%%%%%%%%%%%%%%COLOR MATCHING FUNCTION [output_color output_image] = validate_color_new(handles.reference_image,handles.data);%new main function for finding color match %%%%%%%%%%%%%%%%%%%% set(handles.color_text,'string',upper(output_color)); %sets the string value the name of the color img = im2uint8(zeros([128 128 3])); %create a img file which can display the color val = output_image(round(size(output_image,1)/2),round(size(output_image,2)/2),:); val = squeeze(val)'; img(:,:,1) = val(1); img(:,:,2) = val(2); img(:,:,3) = val(3); set(handles.h2,'CData',img);drawnow; %outputs the color on this img handles.first = output_color; %store the output color in first variable if ~strcmp(output_color,'NOCOLOR') %if color cannot be identified from the stored colors then dont give audiovisual indication if ~isfield(handles,'second') %check condition in first run, if condition is not satisfied then second varaible = first variable handles.second = output_color; end if ~strcmp(handles.first,handles.second) %if colors are different then do the following activity try%necessary if sound card is not present if strcmp(get(handles.sound_alert,'Checked'),'on')%give and alert only if sound_alert is set to on play(handles.player); end catch errordlg(lasterr); end if strcmp(get(handles.animation,'Checked'),'on') %do the animation if animation is set to on model_color(output_color);%calls a model wearing the color.Default time duration of 3 seconds end end end if strcmp(get(handles.auto_hide,'Checked'),'on') pause(handles.displayperiod);%pause for the number of seconds intialised initially setWindowState(handles.guifig,'minimize'); %sets the gui figure to minimize end if strcmp(get(handles.auto_hide,'Checked'),'off')%This is useful to keep a pause of the same time irrespective of auto hide on or off pause(handles.displayperiod);%pause for the number of seconds intialised initially end
三、執行結果
四、備註
版本:2014a
完整程式碼或代寫加1564658423