資源簡介
導入一張靶紙原圖,導入一張帶有彈孔的靶紙圖,經過圖像識別與處理,能顯示出靶數。以上過程已經整合到簡易的GUI界面中。

代碼片段和文件信息
function?varargout?=?gui(varargin)
gui_Singleton?=?1;
gui_State?=?struct(‘gui_Name‘???????mfilename?...
???????????????????‘gui_Singleton‘??gui_Singleton?...
???????????????????‘gui_OpeningFcn‘?@gui_OpeningFcn?...
???????????????????‘gui_OutputFcn‘??@gui_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
function?gui_OpeningFcn(hobject?eventdata?handles?varargin)
handles.output?=?hobject;
guidata(hobject?handles);
function?varargout?=?gui_OutputFcn(hobject?eventdata?handles)?
varargout{1}?=?handles.output;
function?pushbutton2_Callback(hobject?eventdata?handles)
if?get(handles.radiobutton1‘value‘)???%判斷是否選擇了單選按鈕
????[filenamepathname]=uigetfile({‘*.*‘;‘*.bmp‘;‘*.jpg‘;‘*.tif‘;‘*.jpg‘}‘選擇圖像‘);
if?isequal(filename0)||isequal(pathname0)
errordlg(‘您還沒有選取圖片!!‘‘溫馨提示‘);%如果沒有輸入,則創建錯誤對話框
return;
else
axes(handles.axes1);%%使用圖像,操作在坐標1
image=[pathnamefilename];%合成路徑+文件名
I1=imread(image);%讀取圖像?????????
imshow(I1);%在坐標axes1顯示原圖像
handles.I1?=?I1;
guidata(hobjecthandles);???%以上兩行是用于不用Function之間調用同一張圖片
title(‘靶紙圖像‘);???%圖片注釋
end
elseif?get(handles.radiobutton2‘value‘)
????[filenamepathname]=uigetfile({‘*.*‘;‘*.bmp‘;‘*.jpg‘;‘*.tif‘;‘*.png‘}‘選擇圖像‘);
if?isequal(filename0)||isequal(pathname0)
errordlg(‘您還沒有選取圖片!!‘‘溫馨提示‘);%如果沒有輸入,則創建錯誤對話框
return;
else
axes(handles.axes2);%%使用圖像,操作在坐標1
image=[pathnamefilename];%合成路徑+文件名
I2=imread(image);%讀取圖像
imshow(I2);%在坐標axes1顯示原圖像
handles.I2?=?I2;
guidata(hobjecthandles);
title(‘彈孔圖像‘);
end
end
function?radiobutton1_Callback(hobject?eventdata?handles)
set(handles.radiobutton1‘value‘1);
set(handles.radiobutton2‘value‘0);
function?radiobutton2_Callback(hobject?eventdata?handles)
set(handles.radiobutton1‘value‘0);
set(handles.radiobutton2‘value‘1);
function?[hough_circle]=hough_circle(BWstep_rstep_angler_minr_maxp)
%??Hough變換來檢測圓心
global?t1;??????????%最小圓半徑
global?t2;??????????%圓心的x???
global?t3;??????????%圓心的y?
t2=0;
t3=0;
[mn]=size(BW);
size_r=round((r_max-r_min)/step_r)+1;
size_angle=round(2*pi/step_angle);
hough_space=zeros(mnsize_r);
[rowscols]=find(BW);
ecount=size(rows);
for?i=1:ecount
????for?r=1:size_r
????????for?k=1:size_angle
????????????a=round(rows(i)-(r_min+(r-1)*step_r)*cos(k*size_angle));
????????????b=round(cols(i)-(r_min+(r-1)*step_r)*sin(k*size_angle));
????????????if(a>0&&a<=m&&b>0&&b<=n)
????????????????hough_space(abr)=hough_space(abr)+1;
????????????end
????????end
????end
end
max_para=max(max(max(hough_space)));
index=find(hough_space>=max_para*p);
length=size(index);
hough_circle=false(mn);
for?i=1:ecount
????for?k=1:length
????????par3=floor(index(k)/(m*n))+1;
????????par2=floor((index(k)-(par3-1)*(m*n))/m)+1;
????????par1=index(k)-(par3-1)*(m*n)-(par2-1)*m
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????63198??2019-12-09?15:06??GUI\gui.fig
?????文件???????7259??2019-12-11?22:48??GUI\gui.m
?????目錄??????????0??2019-12-11?22:49??GUI
-----------?---------??----------?-----??----
????????????????70457????????????????????3
- 上一篇:matlab聲線圖源代碼
- 下一篇:Matlab2010b的license.txt
評論
共有 條評論