图像基础21 手写数字识别
来源:互联网 发布:java如何定义字符数组 编辑:程序博客网 时间:2024/05/16 12:28
本文学习资源来自《机器学习实践指南》
在另一篇学习笔记里,记录了通过k-近邻算法识现的手写数字识别。
http://blog.csdn.net/xundh/article/details/73734509
本文使用SVM算法。SVM在文本分类、手写文字识别、图像分类、生物序列分析等实际应用中表现出了非常好的性能。
算法
- 为每个数字各准备4个样本图像
- 将图像调整为8*8尺寸,读取样本图像
- 读取未知样本图像,将未知图像调整为8*8尺寸,提取图像特征码,生成图像特征组
- 将未知样本图像特征组送入SVM仿真测试,仿真输出值为根据图像识别出的数字。
数据集
USPS美国邮政服务手写数字识别库
http://www.datatang.com/data/11927
用于数字的手写识别。库中共有9298个手写数字图像(均为16*16像素的灰度图像的值,灰度值已被归一化),其中7291个用于训练,2007个用于测试。
手写数字MNIST数据集
http://www.datatang.com/data/3082
用于数字的手写识别。库中共有6万个训练集和1万个测试集。
http://yann.lecun.com/exdb/mnist/
用于笔交互的手写数字识别(UCI)
http://www.datatang.com/data/578
用于数字的手写识别。库中共有44个人的250个手写数据例子
用于处理和理解手写阿拉伯语的数据集
http://www.datatang.com/data/2188
用于阿拉伯语的手写识别。包括51个人的2万个手写数据。
实现
#-*- coding: utf-8 -*-import numpy as npimport mlpyimport cv2print("load...")def getnumc(fn): '''返回数字特征''' fnimg = cv2.imread(fn) img = cv2.resize(fnimg,(8,8)) alltz=[] for now_h in range(0,8): xtz=[] for now_w in range(0,8): b=img[now_h,now_w,0] g=img[now_h,now_w,1] r=img[now_h,now_w,2] btz = 255-b gtz = 255-g rtz = 255-r if btz >0 or gtz>0 or rtz>0: nowtz=1 else: nowtz=0 xtz.append(nowtz) alltz+=xtz return alltz#读取样本数字x=[]y=[]for numi in range(1,10): for numij in range(1,5): fn='nums/'+str(numi)+'-'+str(numij)+'.png' x.append(getnumc(fn)) y.append(numi)x=np.array(x)y=np.array(y)svm = mlpy.LibSvm() #svm_type='c_svc', kernel_type='poly', gamma=10)svm.learn(x,y)print (svm.pred(x))for iii in range(1,10): testfn='nums/test/'+str(iii)+'-test.png' testx=[] testx.append(getnumc(testfn)) print(svm.pred(testx))
代码在windows下运行未通过,mlpy.LibSvm可能存在兼容问题。CentOS调试后贴出运行结果。
阅读全文
0 0
- 图像基础21 手写数字识别
- 手写数字识别实验
- 手写数字识别
- 识别手写数字
- CNN 手写数字识别
- SVM - 手写数字识别
- caffe识别手写数字
- KNN手写数字识别
- 手写数字识别实现
- SVM手写数字识别
- tensorflow识别手写数字
- 手写数字识别
- MNIST手写数字识别
- 识别手写数字
- 摄像头识别手写数字
- 手写数字识别
- Tensorflow手写数字识别
- Python徒手实现识别手写数字—图像识别算法(K最近邻)
- 双十一选IT培训?都在这,超低价
- 大神博客推荐
- Python实战::四周实现爬虫系统笔记
- 又一程序员被骗,支付宝余额为0,却被骗28万!
- functools.lru_cache装饰器详解
- 图像基础21 手写数字识别
- 程序员是如何得到永生的
- 贵州的程序员年薪都40万不止,和你差在哪里?
- Palindromic Numbers(数位dp)
- system函数在当前进程下执行一个新命令
- 线程
- 当一个程序员写不出代码了,该怎么办?
- 深复制,浅复制,和对象赋值
- 学习django问题记录