java opencv 数字识别算法_[机器学习]基于OpenCV实现最简单的数字识别

本文介绍如何使用OpenCV在Java中实现数字识别。通过训练分类器、图像预处理、图像分割、应用分类器和后期处理等步骤,对游戏Angry Birds中分数进行自动识别。
摘要由CSDN通过智能技术生成

本文将基于OpenCV实现简单的数字识别。这里以游戏Angry

Birds为例,通过以下几个主要步骤对其中右上角的分数部分进行自动识别。

a4c26d1e5885305701be709a3d33442f.png

1. 学习分类器

根据训练样本,选取模型训练产生数字分类器。这里的样本可以是通用的数字样本库(如NIST等),也可以是针对应用场景而制作的专门训练样本。前者优在泛化性,后者强在准确率,当然常用做法是将这两者结合,即在通用数字库基础上做修改。另外这里由于模式并不复杂,计算量也不大,所以不对样本进行特征提取,对原始样本作简单变换后直接作为训练样本。

具体地,首先是生成训练样本矩阵,一般样本是以二维矩阵的方式存在文件当中,现在要将它们读出来,进行适当的预处理,然后生成OpenCV能理解的数据结构。

train_X = cvCreateMat(sample_num * class_num, size * size, CV_32FC1);

train_Y = cvCreateMat(sample_num * class_num, 1, CV_32FC1);

for(i = 0; i 

for(j = 0; j 

src_image = cvLoadImage(file,0);

pimage = preprocessing(src_image, size, size);

...

cvGetRow(train_X, 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值