opencv2.4.9的SVM加载训练模型以及图片预测

当你看到这篇文章说明我们有近似的问题在困扰,分享一下学习心得;最近在学习opencv的SVM,我参照网上的教程,训练了数字图片,但是在svm.xml加载模板时总是报错,于是我在网上找了个昏天暗地,但是最后也是没找到,与是我就结合网上的一些说法,自己开始一顿乱操作,最后居然搞成了,很是高兴;我这里把结果给大家粘贴出来;

#include <opencv2/opencv.hpp>
#include <opencv2/ml/ml.hpp>
#include <stdio.h>  
#include <time.h>  
#include <math.h>  
#include <iostream> 
#include <opencv2/core/core.hpp>  
#include <io.h>
using namespace std;
using namespace cv;
int main()
{
	CvSVM svm;//实例化
	string modlepath="svm.xml";//定义一个字符串
	svm.load(modlepath.c_str());//这里用svm加载训练的模板。c_str()返回的是一个临时指针
	Mat src;
	src=imread("D:\\vspic\\501.png");
	if (src.empty())
	{
		cout<<"not"<<endl;
		return -1;
	}
	Mat temp;
	temp=src.reshape(1,1);
	temp.convertTo(temp,CV_32FC1);
	int response=(int)svm.predict(temp);//开始预测
	cout<<"机器学习训练结果检测:"<<response<<endl;
	waitKey(0);
	return 0;
}

有的博客写的是下面的这种形式,我也尝试了,但是代码总是显示一条红线,证明是错误的呗哈哈

 Ptr<ml::SVM>svm = ml::SVM::load("svm.xml");//加载训练的svm

我感觉我用上边这个出错的原因是opencv的版本不同的问题,应该是不同的版本有不同的加载方式
,这是我个人的总结经验,如果有问题可以随时交流Q:1049300594

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值