opencv 基于SVM的几何形状识别
来源:互联网 发布:windows live影片制作 编辑:程序博客网 时间:2024/04/29 17:09
很多时候,findcontours之后,得到一个封闭的几何形状,如果知道是圆,那就想办法参数化表达圆,如果知道是矩形,相应的想办法参数化表达矩形。当我们开发好简单的直线或者圆的参数化表达算法后,会发现,如何知道是圆还是直线,成为一个迫切需要解决的问题。
本文博文利用SVM实现几何形状的识别。目前只支持cirlce rectangle triangle cross四种。了解其中的原理和思路后,想要支持更多几何形状的识别,我相信,并不是难事。
话不多说,先要部分代码。
1、得到训练的数据
void getData(){trainData.create(train_samples*classes, sampleSize.width*sampleSize.height, CV_32FC1);trainClasses.create(train_samples*classes, 1, CV_32FC1);Mat src_image;char file[255];int i, j;for (i = 0; i<classes; i++){for (j = 0; j< train_samples; j++){sprintf(file, "samples/s%d/%d.png", i, j);src_image = imread(file, 0);if (src_image.empty()){printf("Error: Cant load image %s\n", file);//exit(-1);}Mat image = readImageSaveContour(src_image);Mat imageNewSize;resize(image, imageNewSize, sampleSize, CV_INTER_LINEAR);image.release();image = imageNewSize.reshape(1, 1);image.convertTo(trainData(Range(i*train_samples + j, i*train_samples + j + 1), Range(0, trainData.cols)), CV_32FC1);trainClasses.at<float>(i*train_samples + j, 0) = i;}}}2、申明一个SVM类,并训练
CvSVMParams SVM_params; // CvSVMParams结构用于定义基本参数 SVM_params.svm_type = CvSVM::C_SVC; // SVM类型 SVM_params.kernel_type = CvSVM::LINEAR; // 不做映射 SVM_params.degree = 0;SVM_params.gamma = 1;SVM_params.coef0 = 0;SVM_params.C = 1;SVM_params.nu = 0;SVM_params.p = 0;SVM_params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 1000, 0.01);CvSVM SVM;SVM.train(trainData, trainClasses, Mat(), Mat(), SVM_params);
好吧,展示的部分代码就到此为止。
下面给出整个工程以及训练样本的下载。vs2013+opencv2.4.13可直接运行。下载链接
效果如图所示
0 0
- opencv 基于SVM的几何形状识别
- 基于 OpenCV 的 LBP + SVM 人脸识别
- 【opencv机器学习】基于SVM和神经网络的车牌识别
- 基于opencv的手写数字识别(MFC,HOG,SVM)
- svm 行人识别 训练 基于Opencv
- svm 行人识别 训练 基于Opencv
- 【SVM理论到实践4】基于OpenCv中的SVM的手写体数字识别
- 基于Opencv库中SVM模块的MNIST手写字识别数据库识别
- 基于opencv的SVM实现
- 基于opencv中HOG+SVM的车轮识别及predict()函数的改进
- 【OpenCV学习笔记】【教程翻译】一(基于SVM和神经网络的车牌识别概述)
- OpenCV自学笔记17. 基于SVM和神经网络的车牌识别(一)
- OpenCV自学笔记18. 基于SVM和神经网络的车牌识别(二)
- OpenCV自学笔记19. 基于SVM和神经网络的车牌识别(三)
- OpenCV自学笔记20. 基于SVM和神经网络的车牌识别(四)
- opencv的svm学习_字符识别
- 用opencv svm 折腾的识别程序
- opencv的svm学习_字符识别
- JSP自定义标签开发入门
- KMP算法(代码+图解证明)
- centos 7下mysql数据库设置
- python字符串转换成变量的几种方法
- LinkedBlockingQueue
- opencv 基于SVM的几何形状识别
- 自动化测试框架Cucumber和RobotFramework的实战对比
- linux下怎么查找文件
- pat 乙 1017. A除以B
- 建议154:不要过度设计,在敏捷中体会重构的乐趣
- 动态查找之哈希(hash)表
- AOP 面向切面编程
- jackson和fastjson的效率对比:
- 使用MyEclipse10 中maven插件添加中央仓库中没有的jar包详细使用说明