svm opencv

  • p9_691577
    了解作者
  • 1.2MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-12 10:10
    上传日期
直接将图片分类好放进完好、破损文件夹,完好文件夹全体重命名为1破损文件夹全体重命名为2,测试文件夹全体重命名为3,重命名后后即可运行项目,完成svm分类训练出分类模型svm.xml,并进行预测图片分类。
svm.zip
内容介绍
#include "cv.h" #include <iostream> #include <fstream> #include <string> #include <vector> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/ml/ml.hpp> using namespace cv; using namespace std; #define NUM 35 void getok(Mat& trainingImages, vector<int>& trainingLabels); void getno(Mat& trainingImages, vector<int>& trainingLabels); int main(int argc, char** argv) { Mat classes,trainingData,trainingImages; CvMat* results; vector<int> trainingLabels; getok(trainingImages, trainingLabels); getno(trainingImages, trainingLabels); Mat(trainingImages).copyTo(trainingData); trainingData.convertTo(trainingData, CV_32FC1); Mat(trainingLabels).copyTo(classes); CvSVM SVM;; CvSVMParams param;CvTermCriteria criteria;//新建一个SVM //这里是参数 criteria = cvTermCriteria(CV_TERMCRIT_EPS, 1000, FLT_EPSILON); param = CvSVMParams(CvSVM::C_SVC, CvSVM::RBF, 10.0, 0.09, 1.0, 10.0, 0.5, 1.0, NULL, criteria); SVM.train(trainingData, classes, Mat(), Mat(), param); cout << "训练中。。。。" << endl; SVM.save("svm.xml"); int n = 1; while (n <= 20) //30 { string ImgName; ImgName = "测试/3"; stringstream ss; string str; ss << n; ss >> str; ImgName = ImgName + " (" + str + ")"; //图像文件明格式:ImgName(n) ImgName = ImgName + ".bmp"; cout << "处理:" << ImgName << endl; Mat src_test = imread(ImgName);//读取图片 Mat src_test1 = src_test; resize(src_test, src_test, Size(200, 200));src_test = src_test.reshape(1, 1);src_test.convertTo(src_test, CV_32FC1); float response = SVM.predict(src_test); if (response == 1) imshow("完好", src_test1); if (response == -1) imshow("缺陷", src_test1); waitKey(0); n++; } } void getok(Mat& trainingImages, vector<int>& trainingLabels) { int n = 1; while (n <= NUM) //30 { string ImgName; ImgName = "完好/1"; stringstream ss; string str; ss << n; ss >> str; ImgName = ImgName + " (" + str + ")"; //图像文件明格式:ImgName(n) ImgName = ImgName + ".bmp"; cout << "处理:" << ImgName << endl; Mat src_test = imread(ImgName);//读取图片 resize(src_test, src_test, Size(200, 200)); src_test = src_test.reshape(1, 1); trainingImages.push_back(src_test); trainingLabels.push_back(1); n++; } } void getno(Mat& trainingImages, vector<int>& trainingLabels) { int n1 = 1; while (n1 <= NUM) //30 { string ImgName; ImgName = "破损/2"; stringstream ss; string str; ss << n1; ss >> str; ImgName = ImgName + " (" + str + ")"; //图像文件明格式:ImgName(n) ImgName = ImgName + ".bmp"; cout << "处理:" << ImgName << endl; Mat src_test = imread(ImgName);//读取图片 resize(src_test, src_test, Size(200, 200)); src_test = src_test.reshape(1, 1); trainingImages.push_back(src_test); trainingLabels.push_back(-1); n1++; } }
评论
    相关推荐
    • opencv汽车分类训练正负样本
      opencv汽车分类训练正负样本,其中正样本516张,负样本1045张,从视频上手工抠图下来的,可以用来做车辆分类训练测试,低分提供给大家,欢迎实验
    • opencv 分类
      OPCV分类,可以做图片分类参考。
    • googlenet图像分类opencv源码.rar
      里面保护全部东西,bvlc_googlenet.caffemodel,bvlc_googlenet.prototxt,synset_words.txt, 还有源码
    • OpenCV人检测分类
      opencv中haar+Adaboost已经训练好的分类器。有双目、身体等等,出自专家之手,必属精品,CV 1.0版本。
    • opencv人眼检测分类
      opencv 人眼检测 分类器 harropencv 人眼检测 分类器 harropencv 人眼检测 分类器 harropencv 人眼检测 分类器 harropencv 人眼检测 分类器 harropencv 人眼检测 分类器 harropencv 人眼检测 分类器 harr
    • opencv内置各种分类
      opencv内置人脸识别分类器,对于个人进行人脸检测,更换不同的分类器可得到不同的效果
    • OpenCV - 训练分类
      OpenCV - 训练分类
    • Opencv和图像分类
      使用Opencv进行图像分类的应用程序,对图像的区分程度不错。
    • OpenCV分类训练器
      用窗口界面形式运行OpenCV分类器,参数只需设置即可, 此文件为源码
    • OpenCV
      OpenCV 特征检测,分类器图像