OpenCV神经网络ANN代码编译运行与解读(二)
生活随笔
收集整理的這篇文章主要介紹了
OpenCV神经网络ANN代码编译运行与解读(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【轉載自】《OpenCV筆記(4)實現神經網絡(ANN)》
作者的原文參考了:《OpenCV中使用神經網絡 CvANN_MLP》
實際上的預測結果是并非一個確定值,所以即使用訓練集去做測試,也可能出現不完全匹配的情況。(后續需進一步實驗證實)
備份代碼在此:
#include <stdio.h> #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/imgcodecs/imgcodecs.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/ml/ml.hpp"using namespace cv; using namespace ml; using namespace std;int main() {int width = 512, height = 512;Mat img = Mat::zeros(height, width, CV_8UC3);//建立訓練樣本float train_data[6][2] = {{500,60},{245,40},{480,250},{160,380},{400,25},{55,400}};float labels[6] = { 0, 0, 0, 1, 0, 1 }; Mat train_data_mat(6, 2, CV_32FC1, train_data);Mat labels_mat(6, 1, CV_32FC1, labels);Mat layers_size = (Mat_<int>(1, 3) << 2, 6, 1);//模型創建和參數設置Ptr<ml::ANN_MLP> ann = ml::ANN_MLP::create();//創建一個空模型ann->setLayerSizes(layers_size);ann->setTrainMethod(ml::ANN_MLP::BACKPROP, 0.1, 0.1);ann->setActivationFunction(ml::ANN_MLP::SIGMOID_SYM);ann->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 10000, 1e-6));//設置訓練數據并訓練分類器Ptr<TrainData> tData = TrainData::create(train_data_mat, ROW_SAMPLE, labels_mat);ann->train(tData);//顯示分類的結果Vec3b green(0, 255, 0), blue(255, 0, 0);for (int i = 0; i<img.rows; ++i) {for (int j = 0; j<img.cols; ++j) {Mat sample_mat = (Mat_<float>(1, 2) << j, i);Mat response_mat;ann->predict(sample_mat, response_mat);float response = response_mat.ptr<float>(0)[0];if (response > 0.5) {img.at<Vec3b>(i, j) = green;}else if (response < 0.5) {img.at<Vec3b>(i, j) = blue;}}}//畫出訓練樣本數據int thickness = -1;int lineType = 8;circle(img, Point(500, 60), 5, Scalar(255, 255, 255), thickness, lineType);circle(img, Point(245, 40), 5, Scalar(255, 255, 255), thickness, lineType);circle(img, Point(480, 250), 5, Scalar(255, 255, 255), thickness, lineType);circle(img, Point(160, 380), 5, Scalar(0, 0, 255), thickness, lineType);circle(img, Point(400, 25), 5, Scalar(255, 255, 255), thickness, lineType);circle(img, Point(55, 400), 5, Scalar(0, 0, 255), thickness, lineType);imshow("Example", img);waitKey(0); }總結
以上是生活随笔為你收集整理的OpenCV神经网络ANN代码编译运行与解读(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股债利差走势图在哪里看
- 下一篇: 如何申请花呗账单分期