【图像识别】基于模板匹配算法实现卡牌识别matlab代码

231 阅读3分钟

1 简介

随着图像处理、人工智能、计算机技术的不断发展,计算机识别技术也日趋成熟,逐渐转为使用阶段,目前计算机识别方法主要有两种:

1) 标记识别技术;

2) 基于图像处理的识别技术。

第一种方法是先在识别目标上预先安设一个标记,标记可以是IC条形码等,再将目标的信息存储在标记中,则从标记中可以识别出目标及其它相关的内容。这种方法的优点是识别准确度高、速度快和可靠,但由于这种方法对硬件的要求,使得它存在了许多的局限性,若应用到扑克纸牌识别当中,需要为纸牌装有一个微型的IC,这样的设备价格十分昂贵,同时也摒弃了纸牌的实际用途,普及实用性不强。

基于图像处理的识别技术相比较第一种方法的优势在于不需要给识别目标添加任何辅助设备就可以对其进行识别。应用到扑克纸牌识别当中,对目标信息的采集是非接触性的,可以实时识别,非人工操作,工作效率高。这种方法是基于计算机视觉和图像处理技术,作为一个软件系统,更方便维护和升级,通用性更强。存在着这几方面的优势,基于图像处理的识别技术具有很大的发展空间。

基于图像处理的纸牌识别主要包括纸牌图像预处理(倾斜校正与定位)、特征提取、特征匹配、纸牌识别等方面的技术。系统构成如上图所示,当系统发现监视图像发生变化时,触发图像采集,通过CCD摄像头摄取的纸牌图像,然后识别系统对纸牌图像进行一系列处理从而识别出纸牌,输出识别结果。

2 部分代码

function varargout = poker(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                  'gui_Singleton',  gui_Singleton, ...
                  'gui_OpeningFcn', @poker_OpeningFcn, ...
                  'gui_OutputFcn',  @poker_OutputFcn, ...
                  'gui_LayoutFcn', [] , ...
                  'gui_Callback',   []);
if nargin & isstr(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 poker_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);

global IMAGE;global POKER;global GRAY;global BW;global BWSTR;
IMAGE=0;
POKER=0;
GRAY=0;
BW=0;
BWSTR=0;%全局变量初始化为0
% --------------------------------------------------------------------
function varargout = poker_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
% --------------------------------------------------------------------
function file_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
function new_Callback(hObject, eventdata, handles)
global IMAGE;
global POKER;
global GRAY;
global BW;
global BWSTR;

name=0;
[name,path]=uigetfile({'*.bmp';'*.jpg';'*,tif'},'打开图像');
if name==0;
   return;%没有打开图像
end

IMAGE=imread(strcat(path,name));%成功打开图像
POKER=0;GRAY=0;BW=0;BWSTR=0;%其他图像复位

3 仿真结果

4 参考文献

[1]陶鹏, and 朱华. "模板匹配识别算法和神经网络识别算法的比较及MATLAB实现." 电脑知识与技术:学术版 16.34(2020):4.

部分理论引用网络文献,若有侵权联系博主删除。

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页