學習筆記之 opencv的ML模組

2021-10-03 04:43:23 字數 1597 閱讀 5020

之前開始學opencv的時候就看到opencv裡面有機器學習模組(machine learning,ml),但是一直以來跟著這麼多書籍學習都沒有發現有提及過(畢竟opencv是針對影象處理方面的,所以大部分書籍都以介紹影象處理方面的為主)。無意中,在《opencv和visual studio影象識別應用開發》一書中看到有ml模組的介紹,所以就打算寫下這一篇學習筆記~

在opencv中,ml模組是一組統計分類、回歸分析、資料聚類的類與統計模式函式。

下面直接給出基於opencv的ml庫的svm**:

#include

#include

#include

using namespace cv;

int main()

;mat labelsmat(4, 1, cv_32fc1, labels);

//設定訓練資料

float trainingdata[4][2] = ,,, };

mat trainingdatmat(4, 2, cv_32fc1, trainingdata);

//設定svm引數

cvsvmparams params;

params.svm_type = cvsvm::c_svc;

params.kernel_type = cvsvm::linear;

params.term_crit = cvtermcriteria(cv_termcrit_iter, 100, 1e-6);

//訓練svm

cvsvm svm;

svm.train(trainingdatmat, labelsmat, mat(), mat(), params);

vec3b green(0, 255, 0), blue(255, 0, 0);//opencv裡面儲存為bgr

//顯示svm的決定區

for (int i = 0;i < image.rows;++i)

else if (response == -1)}}

//顯示訓練資料

int thickness = -1;

int linetype = 8;

circle(image, point(501, 10), 5, scalar(0, 0, 0), thickness, linetype);

circle(image, point(255, 10), 5, scalar(255, 255, 255), thickness, linetype);

circle(image, point(501, 255), 5, scalar(255, 255, 255), thickness, linetype);

circle(image, point(10, 501), 5, scalar(255, 255, 255), thickness, linetype);

//顯示支援向量

thickness = 2;

linetype = 8;

int c = svm.get_support_vector_count();

for (int i = 0;i < c;++i)

//顯示結果

imshow("svm結果", image);

waitkey(0);

}

ML學習筆記(一)

fashion mnist model tf.keras.sequential tf.keras.layers.flatten input shape 28 28 tf.keras.layers.dense 128,activation relu tf.keras.layers.dropout 0....

OpenCV學習筆記之IplImage

首先學習下各引數的用法,以後慢慢完善 一 origin 在使用opencv顯示影象時會出現影象倒立的情況,iplimage的origin屬性有關係。origin為0表示頂左結構,即影象的原點是左上角,如果為1為左下角。一般從硬碟讀入的或者通過cvcreateimage方法建立的iplimage預設的...

opencv學習筆記之resize

前邊一篇說opencv中縮放僅有仿射變換一種,查證才知道是錯的,opencv中也有類似matlab中的imresize的函式,即是c 版的resize 當然還有影象金字塔方法 其原型為void resize inputarray src,outputarray dst,size dsize,doub...