// 參考資料:(建議先閱讀此處)
// //
// //
#include
#include
#include
#include
intmain()
; cv::mat labelsmat(4
,1, cv_32sc1, labels)
;// cv_32sc1: 32位有符號單通道矩陣
// 設定訓練資料的座標,注意要和前面的labels對應起來
float trainingdata[4]
[2]=
,,,}
; cv::mat trainingdatamat(4
,2, cv_32f, trainingdata)
;// 初始化支援向量機
auto svm = cv::ml::svm::
create()
; svm-
>
settype
(cv::ml::svm::c_svc)
; svm-
>
setkernel
(cv::ml::svm::linear)
; svm-
>
settermcriteria
(cv::
termcriteria
(cv::termcriteria::max_iter,
100,
1e-6))
; svm-
>
train
(trainingdatamat, cv::ml::row_sample, labelsmat)
;// 初始化畫布
constexpr
auto width =
512, height =
512;
cv::mat image = cv::mat::
zeros
(height, width, cv_8uc3)
;const cv::vec3b green(0
,255,0
),blue
(255,0
,0);
for(
int i =
0; i < image.rows;
++i)
// 遍歷畫布上的每個點
else
if(response ==-1
)}}// 在畫布上畫上訓練資料所表示的點
auto thinckness =-1
; cv::
circle
(image, cv::
point
(501,10
),5, cv::
scalar(0
,0,0
), thinckness)
; cv::
circle
(image, cv::
point
(255,10
),5, cv::
scalar
(255
,255
,255
), thinckness)
; cv::
circle
(image, cv::
point
(501
,255),
5, cv::
scalar
(255
,255
,255
), thinckness)
; cv::
circle
(image, cv::
point(10
,501),
5, cv::
scalar
(255
,255
,255
), thinckness)
; thinckness =2;
auto sv = svm-
>
getuncompressedsupportvectors()
;// 獲得支援向量
for(
int i =
0; i < sv.rows;
++i)
cv::
imwrite
("result.png"
, image)
; cv::
imshow
("result"
, image)
; cv::
waitkey()
;return0;
}
效果圖: OpenCV3 4 3 KNN使用教程
參考資料 建議先閱讀此處 include include include include include void init const auto offsetrow i b for int j 0 j n j std cout init done.n std endl void trainandp...
使用opencv下的SVM分類器
關於svm分類器的基本原理,請參 考對於一般使用來說只需要知道它可以在訓練之後進行資料分類就可以了。opencv內建了svm的函式,接下來是如何使用。首先我們必須了解svm是用來將向量進行分類的,這也就意味著我們訓練和分類的資料必須是向量。這個是我進行樣本獲取的例子 vector path name...
OpenCv3 0 SVM的使用心得(二)
主要有4點總結 1.讀取txt的內容 檔案路徑 按行輸出。下面語句中,pictures.txt中是資料夾中的檔案 列表,samplepath是資料夾路徑 string格式 string和char型別可以使用 連線。char positiveimgname 256 fream f f.open d p...