• 大小: 64KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: Matlab
  • 标签: matlab  图像识别  

资源简介

导入一张靶纸原图,导入一张带有弹孔的靶纸图,经过图像识别与处理,能显示出靶数。以上过程已经整合到简易的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


评论

共有 条评论