0
我想在OpenCV中使用SVM對座標集進行分類。 例如, 標籤1對於{70,80},{94,90},{70,85} 標籤-1 {98,89},{99,94},{91,87}如何在2通道Mat中使用OpenCV中的SVM?
在OpenCV提供的例子中,只有一個座標數據是用於一個節點的 。但是,我想使用座標集作爲 一個節點。我試過用CV_32FC2墊測試。 但是,我認爲它不能用於SVM的訓練。發生錯誤。 有人知道如何在這種情況下使用SVM?
int record[3][3][2] = {
{
{ 70, 80 },
{ 94, 90 },
{ 70, 85 }
},
{
{ 83, 90 },
{ 95, 60 },
{ 90, 82 }
},
{
{ 98, 89 }, // 3반 학생1의 성적
{ 99, 94 }, // 3반 학생2의 성적
{ 91, 87 } // 3반 학생3의 성적
}
};
int labels[3] = { 1, -1, -1 };
Mat trainingDataMat(3, 3, CV_32FC2, record);
Mat labelsMat(3, 1, CV_32SC1, labels);
Ptr<SVM> svm = SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::LINEAR);
svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6));
//! [init]
//! [train]
svm->train(trainingDataMat, ROW_SAMPLE, labelsMat);
我已經理解了你所說的教程代碼。它只考慮節點通過x,y座標的位置。不過,我想考慮點之間的關係。就像在各種數字中找到具體人物一樣。所以我需要使用一組座標作爲對象。 –
類似於一袋字嗎?對不起,沒有經驗,我猜行數必須是2的倍數呢? – Micka
cols,.I表示cols的數量應該是2的倍數,每個對象的特徵數量必須是固定的? – Micka