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

📄 definergb.m

📁 matlab处理图像的一些基本方法。其中有一部分mex程序需要安装编译
💻 M
字号:
function RGB=definergb(rgb, default)%DEFINERGB  User Graphical Interface to define any RGB color.%%       RGB = DEFINERGB(rgb)% %       Open a new figure and by mean of four slide controls%       allows to define any color in the RGB mode.%       The fourth slide control increase or decrease the brigthness.%%       rgb      is the starting color vector, black ([0 0 0]) if omitted.%       RGB     is the vector of the three R, G, B values defining a color.%%       OK           return the specified color.%       CANCEL   return the original color (rgb).%                   %%       Claudio  7 Feb, 1995. %	modified by M. Young 14 Feb, 1995 to put in a color palette to choose a starting color%%% Copyright (c) 1995 by Claudio Rivetti and Mark Young% claudio@alice.uoregon.edu,    mark@alice.uoregon.edu%gvar='global Rsl Gsl Bsl Lsl Rvl Gvl Bvl RGBfr RGBtx df;';global AlexDir Uibgcoloreval(gvar)if nargin <1, rgb=[0 0 0];endif nargin >2, error('Too many input arguments.');endif nargin ==1  df=rgb;else  df=default;endif length(rgb) ~= 3, error('The argument must be a vector of R, G, B values.');endif find(rgb>1 == 1)  |  find(RGB<0 == 1), error('R, G, B values must be between 0 and 1.');end Bg=Uibgcolor;RGB=rgb;Figpos=[400 600 600 250];Rtxpos=[50 200 75 20];Gtxpos=[50 160 75 20];Btxpos=[50 120 75 20];Ltxpos=[20  80 100 20];Rslpos=[130 200 250 20];Gslpos=[130 160 250 20];Bslpos=[130 120 250 20];Lslpos=[130  80 250 20];Rvlpos=[390 200 75 20];Gvlpos=[390 160 75 20];Bvlpos=[390 120 75 20];RGBfrpos=[470 110 110 115];RGBtxpos=[470 87 110 20];DFbtpos=[250 20 80 40];OKbtpos=[405 20 80 40];CANCELbtpos=[505 20 80 40];DFcbk=[gvar  'set(Rsl, ''value'', df(1));set(Rvl, ''string'', num2str(df(1)));',...	     'set(Gsl, ''value'', df(2));set(Gvl, ''string'', num2str(df(2)));',...	     'set(Bsl, ''value'', df(3));set(Bvl, ''string'', num2str(df(3)));',...	     'set(Lsl, ''value'', 0);',...	     'set(Lsl, ''min'',(-1*max([get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')])));',...	     'set(Lsl, ''max'',(1-min([get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')])));',...	     'set(RGBfr, ''Background'', [get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')]);'];StartPalettePos=[30 203];PaletteFrameSize = [20 20];letters='ABCDEFGHILM';numbers='12345678';%%%%%%%%%%  MAKE FIGURE  %%%%%%%%%%%%fig=figure('Position', Figpos, 'Resize', 'Off', 'Color', Bg, 'NumberTitle', 'off', 'Name', 'RGB Definition', 'nextplot', 'new','Interruptible', 'yes');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%			Now begins Claudio's section - buttons and sliders%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  TEXT   %%%%%%%%%%%uicontrol(fig, 'Style', 'text',...                'String', 'Red',...                'Units', 'pixels',...                'Position', Rtxpos,...                'BackgroundColor', Bg,...                'HorizontalAlignment', 'right');uicontrol(fig, 'Style', 'text',...                'String', 'Green',...                'Units', 'pixels',...                'Position', Gtxpos,...                'BackgroundColor', Bg,...                'HorizontalAlignment', 'right');uicontrol(fig, 'Style', 'text',...                'String', 'Blue',...                'Units', 'pixels',...                'Position', Btxpos,...                'BackgroundColor', Bg,...                'HorizontalAlignment', 'right');uicontrol(fig, 'Style', 'text',...                'String', 'Brightness',...                'Units', 'pixels',...                'Position', Ltxpos,...                'BackgroundColor', Bg,...                'HorizontalAlignment', 'right');%%%%%%%%%%%%  SLIDES  %%%%%%%%%%%%%Rsl=uicontrol(fig, 'Style', 'slider',...                'Units', 'pixels',...                'position', Rslpos,...                'Background', 'red',...                'Min', 0,...                'Max', 1,...                'Value', rgb(1),...                'CallBack', ['global Rsl Gsl Bsl Lsl Rvl Gvl Bvl RGBfr RGBtx;set(Rvl, ''string'',  num2str(get(Rsl, ''value'')) );',...				  'set(RGBtx, ''string'', '' '');',...                                  'set(Lsl, ''Min'', -1*max([get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')])  );',...                                  'set(Lsl, ''Max'', 1-min([get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')])  );',...                                  'set(Lsl, ''Value'', 0 , ''Userdata'', 0 );',...                                  'set(RGBfr, ''Background'', [get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')]);']);Gsl=uicontrol(fig, 'Style', 'slider',...                'Units', 'pixels',...                'position', Gslpos,...                'Background', 'green',...                'Min', 0,...                'Max', 1,...                'Value', rgb(2),...                'CallBack', ['global Rsl Gsl Bsl Lsl Rvl Gvl Bvl RGBfr RGBtx;set(Gvl, ''string'',  num2str(get(Gsl, ''value'')) );',...				  'set(RGBtx, ''string'', '' '');',...                                  'set(Lsl, ''Min'', -1*max([get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')])  );',...                                  'set(Lsl, ''Max'', 1-min([get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')])  );',...                                  'set(Lsl, ''Value'', 0 , ''Userdata'', 0 );',...                                  'set(RGBfr, ''Background'', [get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')]);']);Bsl=uicontrol(fig, 'Style', 'slider',...                'Units', 'pixels',...                'position', Bslpos,...                'Background', 'blue',...                'Min', 0,...                'Max', 1,...                'Value', rgb(3),...                'CallBack', ['global Rsl Gsl Bsl Lsl Rvl Gvl Bvl RGBfr RGBtx;set(Bvl, ''string'',  num2str(get(Bsl, ''value'')) );',...				  'set(RGBtx, ''string'', '' '');',...                                  'set(Lsl, ''Min'', -1*max([get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')])  );',...                                  'set(Lsl, ''Max'', 1-min([get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')])  );',...                                  'set(Lsl, ''Value'', 0 , ''Userdata'', 0);',...                                  'set(RGBfr, ''Background'', [get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')]);']);Lsl=uicontrol(fig, 'Style', 'slider',...                'Units', 'pixels',...                'position', Lslpos,...                'Background', Bg,...                'Min', (-1*max([get(Rsl, 'value')  get(Gsl, 'value')  get(Bsl, 'value')])),...                'Max', (1-min([get(Rsl, 'value')  get(Gsl, 'value')  get(Bsl, 'value')])),...                'Value',  0,...		'Userdata', 0,...                'CallBack', ['global Rsl Gsl Bsl Lsl Rvl Gvl Bvl RGBfr RGBtx;',...				  'val=(get(Rsl, ''value'') + get(Lsl, ''value'') - get(Lsl, ''Userdata''));',...				  'if val > 1, val=1;end; if val < 0, val=0;end;',... 				  'set(Rsl, ''value'',  val);',...				  'val=get(Gsl, ''value'') + get(Lsl, ''value'') - get(Lsl, ''Userdata'');',...				  'if val > 1, val=1;end; if val < 0, val=0;end;',...                                   'set(Gsl, ''value'',  val);',...				  'val=get(Bsl, ''value'') + get(Lsl, ''value'') - get(Lsl, ''Userdata'');',...				  'if val > 1, val=1;end; if val < 0, val=0;end;',...                                   'set(Bsl, ''value'',  val);',...				  'set(Lsl, ''Userdata'', get(Lsl, ''value''));',...                                  'set(Rvl, ''string'',  num2str(get(Rsl, ''value'')) );',...                                  'set(Gvl, ''string'',  num2str(get(Gsl, ''value'')) );',...                                  'set(Bvl, ''string'',  num2str(get(Bsl, ''value'')) );',...				  'set(RGBtx, ''string'', '' '');',...                                  'set(RGBfr, ''Background'', [get(Rsl, ''value'')  get(Gsl, ''value'')  get(Bsl, ''value'')]);']);%%%%%%%%%%%%  VALUES  %%%%%%%%%%%%%%%%%%Rvl=uicontrol(fig, 'Style', 'text',...                'String',  num2str(get(Rsl, 'value')),...                'Units', 'pixels',...                'Position', Rvlpos,...                'BackgroundColor', Bg,...                'HorizontalAlignment', 'left');Gvl=uicontrol(fig, 'Style', 'text',...                'String',  num2str(get(Gsl, 'value')),...                'Units', 'pixels',...		 'Position', Gvlpos,...                'BackgroundColor', Bg,...                'HorizontalAlignment', 'left');Bvl=uicontrol(fig, 'Style', 'text',...                'String',  num2str(get(Bsl, 'value')),...                'Units', 'pixels',...                'Position', Bvlpos,...                'BackgroundColor', Bg,...                'HorizontalAlignment', 'left');%%%%%%%%%%  RGB  FRAME  %%%%%%%%%%%%RGBfr = uicontrol(fig, 'Style', 'frame',...                'Units', 'pixels',...                'Position', RGBfrpos,...                'BackgroundColor', [get(Rsl, 'value')  get(Gsl, 'value')  get(Bsl, 'value')]);RGBtx=uicontrol(fig, 'Style', 'text',...                'Units', 'pixels',...                'Position', RGBtxpos,...                'BackgroundColor', Bg,...                'HorizontalAlignment', 'center');%%%%%%%%%  OK - CANCEL  %%%%%%%%%%%%%DFbt=uicontrol(fig, 'Style', 'push',...                'String', 'Default',...                'Units', 'pixels',...		'Interruptible','yes',...		'CallBack', DFcbk,...                'Position', DFbtpos);OKbt=uicontrol(fig, 'Style', 'push',...                'String', 'OK',...                'Units', 'pixels',...		'Interruptible','yes',...                'Position', OKbtpos);CANCELbt=uicontrol(fig, 'Style', 'push',...                'String', 'Cancel',...                'Units', 'pixels',...		'Interruptible','yes',...                'Position', CANCELbtpos);pbs=[OKbt CANCELbt];while ~any(get(fig,'CurrentO')==pbs),   drawnowendif get(fig,'CurrentO')== OKbt, RGB=[get(Rsl, 'value')  get(Gsl, 'value')  get(Bsl, 'value')];end close(fig);return;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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