2012-08-07 62 views
1

這是一個愚蠢的問題,因爲我是很新的SVM,飼餵提取HOG特徵爲CvSVM的火車功能

我已經成功地提取特徵和位置使用的OpenCV的HoGDescriptor:

vector<float> features; 
vector<Point> locations; 
hog_descriptors.compute(image, features, Size(0, 0), Size(0, 0), locations); 

然後我繼續使用CvSVM根據我提取的功能來訓練SVM。

Mat training_data(features); 
CvSVM svm; 
svm.train(training_data, labels, Mat(), Mat(), params); 

這給了我一個錯誤:

OpenCV Error: Bad argument (There is only a single class) in cvPreprocessCategoricalResponses, file /opt/local/var/macports/build/ 

我的問題是,我該如何轉換矢量<特點>到適當的矩陣被送入CvSVM?顯然我做錯了,OpenCV的教程顯示,包含訓練數據的2D矩陣被輸入到SVM中。那麼,如何將矢量<特徵>轉換爲二維矩陣,第二維中的值是多少?

究竟是什麼特徵?它們是由歸一化幅度直方圖組成的9個箱子嗎?

回答

2

我發現了這個問題,因爲我正在測試將特徵向量傳遞到SVM中以便訓練它是否正確,所以我沒有準備同時準備負樣本和正樣本。

然而,CvSVM需要至少2個不同的類來進行培訓,這就是它拋出的錯誤的原因。

無論如何非常感謝!

+0

你能提供完整的代碼嗎?至少我們可以比較並查看原始帖子中的錯誤?謝謝! – 2013-09-30 13:03:58