opencv 机器学习使用

opencv的ml模块包含opencv机器学习K均值,K近邻,贝叶斯,随机森林,SVM等各种机器学习的算法
本文只简单介绍使用过程
创建训练集
samples,方法多种,同时建立训练集对应的标签labels(responses:响应矩阵)
sample和labels为Mat数据类型

建立模型:
cv::Ptrml::type model=type::create()

参数设置:
。。。。。。(每种模型有其各自的特点)

加载训练集合

    CV_WRAP static Ptr<TrainData> create(InputArray samples, int layout, InputArray responses,
                                 InputArray varIdx=noArray(), InputArray sampleIdx=noArray(),
                                 InputArray sampleWeights=noArray(), InputArray varType=noArray());
samples:训练集需要是CV_32F类型(创建的原始数据一般是uchar类型,此时需要进行类型转换,
		void GpuMat::**convertTo**(OutputArray dst, int rtype, double alpha, double beta) const)
layout:两种取值1、ROW_SAMPLE一行为一个样本
			  2、COL_SAMPLE一列为一个样本
response:响应矩阵(或labels:标签)对应样本排列方式,如果ROW_SAMPLE则为一列的矩阵;如果COL_SAMPLE则为一行,同时它应该是CV_32F
varIdx:
sampleIdx:
sampleWeights:权重向量,每个样本的权重
varType:

cv::Ptrml::TrainData tadata=ml::TrainData::create(samples,ml::ROW_SAMPLE, labls);

训练模型

    template<typename _Tp> static Ptr<_Tp> train(const Ptr<TrainData>& data, int flags=0)
    data:类型为Ptr<TrainData>的数据
    flag构建模型的方法标志

model->train(tdata);

保存训练结果

CV_WRAP virtual void save(const String& filename) const;

model->save("***.yml");//也可以是xml文件等等

加载训练模型

    template<typename _Tp> static Ptr<_Tp> load(const String& filename, const String& objname=String())
    filename:文件名
    objname:可选择的要读取节点名称

cv::Ptr<type> model_SVM = Algorithm::load<type>("***.yml");

预测结果

virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const = 0;
samples:输入数据矩阵
results:预测结果输出矩阵
flag:模型方法标志,取决于具体模型(是否使用新数据对模型进行更新)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值