1

私は SVM にまったく慣れていないので、これはばかげた質問です。

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/ 

私の質問は、ベクトル < features >を CvSVM に供給される適切なマトリックスに変換するにはどうすればよいですか? 明らかに私は何か間違ったことをしています.OpenCVのチュートリアルは、トレーニングデータを含む2DマトリックスがSVMに供給されることを示しています. では、ベクトル < features >を 2D マトリックスに変換するにはどうすればよいですか? 2 次元の値は何ですか?

これらの機能は正確には何ですか? それらは、正規化されたマグニチュード ヒストグラムで構成される 9 つのビンですか?

4

1 に答える 1

2

トレーニングのために特徴ベクトルを SVM に渡すことが正しいかどうかをテストしていたので、問題を発見しました。負のサンプルと正のサンプルの両方を用意する必要はありませんでした。

それでも、CvSVM はトレーニングのために少なくとも 2 つの異なるクラスを必要とするため、エラーがスローされました。

とにかくどうもありがとう!

于 2012-08-07T10:40:56.697 に答える