日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV:使用OpenCV3随机森林进行统计特征多类分析

發(fā)布時(shí)間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV:使用OpenCV3随机森林进行统计特征多类分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

???????? 原文鏈接:在opencv3中的機(jī)器學(xué)習(xí)算法練習(xí):對(duì)OCR進(jìn)行分類(lèi)????????????

???????? 本文貼出的代碼為自己的訓(xùn)練集所用,作為參考。可運(yùn)行demo程序請(qǐng)拜訪(fǎng)原作者。

???????? CNN作為圖像識(shí)別和檢測(cè)器,在分析物體結(jié)構(gòu)分布的多類(lèi)識(shí)別中具有絕對(duì)的優(yōu)勢(shì)。通多多層卷積核Pooling實(shí)現(xiàn)對(duì)物體表面分布的模板學(xué)習(xí),以卷積核的形式存儲(chǔ)在網(wǎng)絡(luò)中。而對(duì)于統(tǒng)計(jì)特征,暫時(shí)沒(méi)有明確的指導(dǎo)規(guī)則。

???????? opencv3中的ml類(lèi)與opencv2中發(fā)生了變化,下面列舉opencv3的機(jī)器學(xué)習(xí)類(lèi)方法實(shí)例,以隨機(jī)森林為例。

代碼:

//使用OpenCV隨機(jī)森林訓(xùn)練模型//使用訓(xùn)練好的樣本-TXT文件int RTreesTrain( int argc, char* argv[] ){if (argc < 9) {std::cout << "argc<9";return 0;}std::string fileFeatureTrain(argv[1]);std::string fileFeatureTest(argv[2]);std::string fileTrees(argv[3]);int lenF = atoi(argv[4]);//特征長(zhǎng)度 32int numF = atoi(argv[5]);//使用特征個(gè)數(shù) 1000int nsample = atoi(argv[6]);//總樣本數(shù) 大于numFint nTrees = atoi(argv[7]);int nClass = atoi(argv[8]);//載入特征cv::Mat data;cv::Mat responses;const string data_filename = fileFeatureTrain;read_num_class_data( data_filename, numF, lenF, &data, &responses );cv::Ptr<cv::ml::RTrees> StyleModelHSV;StyleModelHSV = cv::ml::RTrees::create();StyleModelHSV->setMaxDepth(10);StyleModelHSV->setMinSampleCount(10);StyleModelHSV->setRegressionAccuracy(0);StyleModelHSV->setUseSurrogates(false);StyleModelHSV->setMaxCategories(nClass);StyleModelHSV->setPriors(cv::Mat());StyleModelHSV->setCalculateVarImportance(true);StyleModelHSV->setActiveVarCount(4);StyleModelHSV->setTermCriteria(TC(10000, 0.01f));int nsamples_all = nsample;// data.rows;int ntrain_samples = numF;// (int)(nsamples_all*0.8);cv::Ptr<cv::ml::TrainData> tdata = prepare_train_data(data, responses, ntrain_samples);cout << "The Model is training....." << endl;StyleModelHSV->train(tdata);StyleModelHSV->save(fileTrees);return 1;}

// 讀取文件數(shù)據(jù)bool read_num_class_data( const string& fileFeatureTrain, int numF,int fLen, cv::Mat* _data, cv::Mat* _responses){using namespace cv;Mat el_ptr(1, numF, CV_32F);vector<int> responses(0);_data->release();_responses->release();freopen(fileFeatureTrain.c_str(), "r", stdin);cout << "The feature is loading....." << endl;int i = 0;int label = 0;for (int i = 0; i < numF; ++i) {StyleFeature aFeat;aFeat.second.resize(fLen);std::string sline;getline(cin, sline);//以空格分開(kāi)int idxBlank = sline.find_first_of(" ");std::string sLabel = sline;//獲取標(biāo)簽;sLabel.erase(idxBlank, sLabel.length());responses.push_back(label);//aFeat.first = label = atoi(sLabel.c_str());std::string sFV = sline;sFV.erase(0, idxBlank + 1);//獲取一行,特征int idxFv = 0;float fV = 0.0;while (sFV.length() > 0 && idxFv < fLen) {int idxColon = sFV.find_first_of(":");std::string sv = sFV;std::strstream ssv;sv = sv.substr(idxColon + 1, sv.find_first_of(" ") - 2);ssv << sv;ssv >> fV;el_ptr.at<float>(i) = fV;//aFeat.second[idxFv] = fV;++idxFv;sFV.erase(0, sFV.find_first_of(" ") + 1);}_data->push_back(el_ptr);//trainData.push_back(aFeat);}fclose(stdin); cout << "The feature load over....." << endl;Mat(responses).copyTo(*_responses);return true;}
//準(zhǔn)備訓(xùn)練數(shù)據(jù)cv::Ptr<cv::ml::TrainData> prepare_train_data( const cv::Mat& data, const cv::Mat& responses, int ntrain_samples ){using namespace cv;Mat sample_idx = Mat::zeros(1, data.rows, CV_8U);Mat train_samples = sample_idx.colRange(0, ntrain_samples);train_samples.setTo(Scalar::all(1));int nvars = data.cols;Mat var_type(nvars + 1, 1, CV_8U);var_type.setTo(Scalar::all(ml::VAR_ORDERED));var_type.at<uchar>(nvars) = ml::VAR_CATEGORICAL;return ml::TrainData::create(data, ml::ROW_SAMPLE, responses, noArray(), sample_idx, noArray(), var_type);}
樣本結(jié)構(gòu):

0 1:211946 2:0 3:0 4:0 5:105 6:5693 7:34 8:0 9:0 10:0 11:25 12:12697 13:226916 14:1826 15:497 16:282 17:105 18:15 19:104 20:18 21:0 22:737 23:46979 24:17889 25:7121 26:6970 27:9441 28:12679 29:20890 30:37498 31:43568 32:27465 0 1:23544 2:210 3:11663 4:158 5:310 6:166 7:591 8:6131 9:193297 10:1985 11:1136 12:809 13:149069 14:33036 15:20045 16:11525 17:6552 18:2928 19:2590 20:1844 21:1305 22:11106 23:81817 24:29063 25:6654 26:5015 27:4916 28:8862 29:34762 30:44044 31:17409 32:7458 0 1:254596 2:0 3:65361 4:0 5:0 6:0 7:0 8:0 9:0 10:0 11:10 12:14033 13:333347 14:330 15:75 16:80 17:25 18:0 19:42 20:0 21:0 22:101 23:31990 24:66583 25:49191 26:59149 27:35800 28:25089 29:21463 30:18022 31:18409 32:8304 0 1:11697 2:2431 3:228 4:9 5:0 6:1 7:150 8:28 9:8413 10:9673 11:6345 12:6025 13:7695 14:8080 15:5689 16:6175 17:5146 18:4358 19:3246 20:2170 21:1478 22:963 23:2192 24:6866 25:7082 26:4273 27:3100 28:2733 29:2833 30:3265 31:3835 32:8821






總結(jié)

以上是生活随笔為你收集整理的OpenCV:使用OpenCV3随机森林进行统计特征多类分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。