openCV SVM
- Library/opencv
- 2013. 1. 25.
SVM C/C++ code
>> 주의사항
- svm 에 초기값을 제대로 넣어주어야 결과가 제대로 나온다.
dataclass 의 type 수를 2개만 줄건지 그 이상 줄건지 확실히 하도록 하자. 그렇지 않으면 svm 의 predict() 함수의 return 값이 원하는 값이 아닐 거다!
>> 코드
- 초기화
// Set up training data float labels[4] = {1.0, 2.0, 2.0, 1.0}; Mat labelsMat(4, 1, CV_32FC1, labels); float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} }; Mat trainingDataMat(4, 2, CV_32FC1, trainingData);
- train & predict
SVM svm; svm.train(trainingDataMat, labelsMat, Mat(), Mat(), params); Vec3b green(0,255,0), blue (255,0,0); // Show the decision regions given by the SVM for (int i = 0; i < image.rows; ++i) for (int j = 0; j < image.cols; ++j) { Mat sampleMat = (Mat_(1,2) << i,j); float response = svm.predict(sampleMat); //cout << "response =" << response << endl; if ( response == 1) image.at (j, i) = green; else if (response == -1) image.at (j, i) = blue; }
} ...
predict() 함수
float response = svm.predict(sampleMat, true);
위의 함수에서 2번째 parameter 로 true 값을 줄 경우 distance 값이 출력. ( distance 값을 출력하기 위해서는 class type=2 이어야 함)
>> 추가 설명
- 이미지를 training 하고 SVM 을 이용하여 classification 을 하고 싶을 때에는 HOG, sift 등 feature 정보를 담자.
- 하는 방법은 찾아보기!
전체 소스코드 - 열어보자
'Library > opencv' 카테고리의 다른 글
[opencv 2.4.3] Image ROI (0) | 2013.04.15 |
---|---|
lib svm (0) | 2013.01.25 |
[opencv] Mat ROI (0) | 2013.01.21 |
HOG, SVM (0) | 2013.01.16 |
opencv font (0) | 2012.11.23 |