本文为笔者读书笔记,欢迎转载,请注明本博,谢谢。如有不足,欢迎指出。
对于结构体c++语言来说,结构体要先定义再使用,如上文CvHaarTrainingData和CvBackgroundData(http://blog.csdn.net/ding977921830/article/details/46330879);对于训练样本来说,要把训练样本(图片)转化为计算机能识别的.vec文件;对于训练过程来说,要使用训练样本的数据,要先为训练样本的内容分配内存,这就是下面谈到的icvCreateHaarTrainingData和icvCreateBackgroundData。
1 函数icvCreateHaarTrainingData
//功能:为训练样本创建内存,里面内存为空,需要进一步处理
CvHaarTrainigData*icvCreateHaarTrainingData( CvSize winsize, int maxnumsamples )
{输入:
Winsize:样本图像大小
Maxnumsamples:样本总数,//Maxnumsamples=正样本总是+负样本总数。
输出:CvHaarTrainigData*data,data指向分配的内存首地址。
伪代码:为data的各个成员分配内存。
Return data;
}
2 函数 icvCreateBackgroundData
//功能:为负样本分配内存
CvBackgroundData* icvCreateBackgroundData(const char* filename, CvSize winsize )
{输入:
const char* filename:保存每个负样本的绝对路径和,名称和扩展名
CvSize winsize:负样本图像的大小。
输出:CvBackgroundData*data。
伪代码:保存每个负样本的绝对路径和,名称和扩展名到data->filename;
记录负样本的总数量到data->count。
Return data;
}
这部分内容分别对应上文中的
部分参考内容:
http://www.opencvchina.com/thread-129-1-1.html