-
大小: 58.26MB文件类型: .zip金币: 1下载: 0 次发布日期: 2023-02-19
- 语言: 其他
- 标签: Opencv/SVM
资源简介
该工程基于Opencv2.4.9和Visual Studio2010搭建,下载下来可直接运行。该工程SVM训练的样本也已在文件里面。
代码片段和文件信息
//opencv2.4.13
#include “opencv2/core/core.hpp“
#include “opencv2/highgui/highgui.hpp“
#include “opencv2/imgproc/imgproc.hpp“
#include
#include
using namespace cv;
using namespace std;
//全局变量
Size sampleSize(160160);//样本的大小
int train_samples =10;
int classes = 4;
Mat trainData;
Mat trainClasses;
//申明全局函数
Mat readImageSaveContour(Mat src);
void getData();
int main()
{
Mat src = imread(“5.png“ 0);
getData();
//定义SVM
/*CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER 100 1e-6);*/
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);
//得到图像进行预测
Mat show;
cvtColor(srcshow8);//8 表示灰度图到彩色图
Mat imageWhite;
threshold(src imageWhite 100 255 8);
imageWhite = 255 - imageWhite;
vector > contours;
vector hierarchy;
findContours(imageWhite contours hierarchy RETR_EXTERNAL CHAIN_APPROX_NONE);
for (int index = contours.size() - 1; index >= 0; index--)
{
Rect rectangleTem = boundingRect(contours[index]);
Mat image;
image = Mat::zeros(src.size() CV_8UC1);
drawContours(image contours index Scalar(255) 2 8 hierarchy);
Mat tem = image(rectangleTem);
Mat imageNewSize;
resize(tem imageNewSize sampleSize CV_INTER_LINEAR);
image.release();
image = imageNewSize.reshape(1 1);
image.convertTo(image CV_32FC1);
int response = (int)SVM.predict(image);
if (response == 0)
{
cout << “ circle“ << endl;
string str = “circle“;
putText(show str Point(rectangleTem.x + rectangleTem.width / 2 rectangleTem.y + rectangleTem.height / 2)
FONT_HERSHEY_SIMPLEX 0.5 Scalar(0 0 255) 1 8);
}
else if (response == 1)
{
cout << “ rectangle“ << endl;
string str = “rectangle“;
putText(show str Point(rectangleTem.x + rectangleTem.width / 2 rectangleTem.y + rectangleTem.height / 2)
FONT_HERSHEY_SIMPLEX 0.5 Scalar(0 0 255) 1 8);
}
else if (response == 2)
{
cout << “ triangle“ << endl;
string str = “triangle“;
putText(show str Point(rectangleTem.x + rectangleTem.width / 2 rectangleTem.y + rectangleTem.height / 2)
FONT_HERSHEY_SIMPLEX 0.5 Scalar(0 0 255) 1 8);
}
else if (response == 3)
{
cout << “ cross“ << endl;
string str = “cross“;
putText(show str Point(rectangleTem.x + rectangleTem.width / 2 rectangleTem.y + rectangleTem.height / 2)
FONT_HERSHEY_SIMPLEX 0.5 Scalar(0 0 255) 1 8);
}
}
imshow(“result“sh
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\Debug\
文件 104448 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\Debug\predictShape.exe
文件 578628 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\Debug\predictShape.ilk
文件 1814528 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\Debug\predictShape.pdb
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\
文件 12058624 2016-09-08 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape.sdf
文件 982 2016-09-08 09:27 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape.sln
文件 30208 2016-09-08 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape.v12.suo
文件 16095 2016-09-08 13:52 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\5.png
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\
文件 316952 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\main.obj
文件 982 2019-01-07 16:26 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.log
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.tlog\
文件 812 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.tlog\cl.command.1.tlog
文件 15310 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.tlog\CL.read.1.tlog
文件 804 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.tlog\CL.write.1.tlog
文件 2350 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.tlog\li
文件 5492 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.tlog\li
文件 782 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.tlog\li
文件 205 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\predictShape.tlog\predictShape.lastbuildstate
文件 445440 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\vc120.idb
文件 847872 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\Debug\vc120.pdb
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\ipch\
目录 0 2019-01-07 16:26 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\ipch\predictshape-1bddd8b1\
文件 4873 2016-09-08 15:46 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\main.cpp
文件 4089 2016-09-08 10:03 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\predictShape.vcxproj
文件 945 2016-09-08 10:03 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\predictShape.vcxproj.filters
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\samples\
目录 0 2019-01-13 15:47 SVM多样本训练_识别几何体\predictShape(CSDN_SVM参考简易程序,48C币)\predictShape\samples\s0\
............此处省略2074个文件信息
- 上一篇:51做平衡车
- 下一篇:FPGA应用开发入门与典型_源代码
评论
共有 条评论