2014-04-08 3 views
0

C++에서 OpenCV 라이브러리로 BOW를 구현하려고합니다.OpenCV BOW - 너무 높은 막대 그래프 값

featureDetector->detect(image, keypoints); 
descriptorExtractor->compute(image, keypoints, descriptors); 
bowTrainer.add(descriptors); 

후 어휘 bowTrainer.cluster() 훈련 및 BOWImgDescriptorExtractor bowDE에 저장된다 : I (각 이미지에 대한) 이런 SIFT 방법으로 이미지의 키포인트를 추출 하였다. 어휘를 저장 한 후에는 이미지 중 일부에 대해 적어도 하나의 다이어그램을보고 싶었습니다. 이것은이

featureDetector->detect(image, keypoints); 
bowDE->compute(image, keypoints, histogram); 
for (int i = 0; i < histogram.cols; i++) 
    cout << histogram.at<unsigned>(0, i) << ","; 

과 같이 구현되고 결과가 k 열 (K-수단으로부터 k) 0 또는 난이 올바른 생각하지 않는다 980000000 주위 STH 중 하나를 값으로 1 행이, 내가 뭘 오전 말해 줘요 잘못하고있다. 다이어그램을 보여주고 싶을 때 이것은 매우 나빠 보인다.

답변

0

거의 잊어 버렸습니다 ... 해결 방법은 매우 간단했습니다. 라인 : 생성 된 히스토그램이 히스토그램 정규화 때문에

cout << histogram.at<unsigned>(0, i) << ","; 

있던는

cout << histogram.at<float>(0, i) << ","; 

로 변경한다. 자세한 내용은 OpenCV forum answer

을 참조하십시오.