资源简介
导入一张靶纸原图,导入一张带有弹孔的靶纸图,经过图像识别与处理,能显示出靶数。以上过程已经整合到简易的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
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论