STDINから(行)ベクトルの集合を受け取り、STDOUTに中心ベクトルを吐く。
# include <vector>#include <iostream>#include <sstream>#include <opencv2/opencv.hpp>using namespace std;int main(int argc, char** argv){
int K = 10; cv::BOWKMeansTrainer trainer(K); std::string buf; while(getline(cin, buf)){ stringstream ss(buf); vector<float> feature; float v; while(ss >> v){ feature.push_back(v); } trainer.add(cv::Mat_<float>(feature).t()); } cerr << "#features = " << trainer.descripotorsCount() << endl; cv::Mat_<float> dictionary = trainer.cluster(); for(int y = 0; y < dictionary.rows; ++y){ for(int x = 0; x < dictionary.cols; ++x){ cout << dictionary(y, x) << "\t"; } cout << endl; }}