openCV机器学习
上周看代码的时候发现自己把机器学习的代码写了个开头,然后就烂尾了,想着既然开了个头,干脆就花一些时间写下去得了,反正是使用OpenCV去做一个封装,想必也没有多难,所以就开始写了。其实关于模式识别和机器学习的东西很早就开始做了,但是总是觉得做的并不太好,所以感觉有点遗憾,也没有能够留下一点什么东西。
总的来说以前主要做的东西是关于MNIST手写数字识别库的一些东西,手写数字识别库是一个用于机器学习的开源库,在机器学习中这个库使用得很广泛,其中包含了60000个训练样本和1000预测样本,这个库的格式很简单,首先是4字节的int型变量,表示样本的个数,然后是两个四字节的变量表示每个手写数字的大小,实际上训练样本是60000个,每个样本影像的大小为28*28,在读取数据头的时候注意,需要字节取反,所以整个读取存在一个字节取反的问题,字节取反的代码如下:1
2
3
4
5
6
7
8
9
10
11void mnistFile::swapBuffer(char* buf)
{
char temp;
temp = *(buf);
*buf = *(buf+3);
*(buf+3) = temp;
temp = *(buf+1);
*(buf+1) = *(buf+2);
*(buf+2) = temp;
}