opencv下使用SVM进行简单颜色分类
2016-01-31 10:04
435 查看
在opencv下有个SVM的例子,我把那个例子改了改,试试能否对颜色进行分类,下面我给出代码!
<span style="font-size:18px;">#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/ml/ml.hpp> #include<iostream> using namespace cv; using namespace std; int main(int argc, char *argv[]) { float labels[6]={1.0, 1.0, 1.0, 0, 0, 0}; Mat labelsMat(6,1,CV_32FC1,labels);//设置输出学习样本 float train_Data[6][3]={ {255,0, 0}, {255,0,0}, {255, 0,0}, {0,0,255 },{0,0,255},{0,0,255}}; Mat train_DataMat(6,3,CV_32FC1,train_Data);//设置输入样本 cout<<train_DataMat<<endl; /* 设置参数 */ CvSVMParams params; params.svm_type=CvSVM::C_SVC; params.kernel_type=CvSVM::LINEAR; params.term_crit=cvTermCriteria(CV_TERMCRIT_ITER,20000,1e-6); CvSVM SVM; SVM.train(train_DataMat,labelsMat,Mat(),Mat(),params);//开始训练 /*设定我们测试的数据*/ Mat Red_Mat(100,100,CV_32FC3,Scalar(255,0,0)); circle(Red_Mat,Point(Red_Mat.rows/2,Red_Mat.cols/2),30,Scalar(0,0,255),8); namedWindow("Test_Image",CV_WINDOW_AUTOSIZE); imshow("Test_Image",Red_Mat); uchar *p=Red_Mat.data; Mat T3_M(Red_Mat.rows*Red_Mat.cols,3,CV_32FC1,p);//转化成一维 Mat T3_Out(Red_Mat.rows*Red_Mat.cols,1,CV_32FC1,0);//设定输出矩阵 // cout<<"T3_Out: "<<T3_Out<<endl; /*小数据测试*/ float T1[3]={255,0,0},T2[3]={0,0,255}; Mat T1_M(1,3,CV_32FC1,T1); Mat T2_M(1,3,CV_32FC1,T2); cout<<"T1: "<<SVM.predict(T1_M)<<endl; cout<<"T2: "<<SVM.predict(T2_M)<<endl; cout<<"rows:"<<T3_M.rows<<endl; /*设定的图像进行测试*/ SVM.predict(T3_M,T3_Out);//进行输出预测,也就是进行数据分类 uchar *p_out=T3_Out.data; Mat Out_Image(Red_Mat.rows,Red_Mat.cols,CV_32FC1,p_out);//转换成MAT格式进行输出 namedWindow("Out_Image",CV_WINDOW_AUTOSIZE); imshow("Out_Image",Out_Image); // cout<<"T3: "<<Out_Image<<endl; SVM.save("Red.xml"); waitKey(0); }</span>但是这仅仅是能够对特殊的颜色分类,只是一个简单的尝试,后面怎么训练还需要技巧!
相关文章推荐
- Linux调度器性能分析 - 1
- linux状态及原理全剖析
- 大型网站架构系列
- 基于opencv自适应的camshift算法
- 秒算下自己编译安装opencv
- Archlinux在Btrfs分区上的安装(bios篇)
- Mac OS X 配置Apache
- Linux命令之find(一)
- 一次Linux服务器被入侵和删除木马程序的经历 推荐
- CRT连接Linux
- 使用Apache commons-configuration读取配置文件
- php5.5+apache2.4
- Xshell常用命令
- Linux 环境下wordpress后台安装主题及插件需要FTP帐号怎么办?
- kali linux SET工具包
- 自己写的一些shell脚本
- redhat 7.1 企业版使用centos 7的yum源
- zabbix安装与使用
- 自动化运维-自动化工具其实只是个噱头
- Linux 主流架构运维工作简单剖析