2013-10-24 6 views
2

opencv 초보자입니다. opencv의 주요 개념에 대해서는 자세히 설명하지 않았습니다.매트, 교육 데이터 ml 단위로 opencv

어쩌면 내 코드가 너무 바보 스럽습니다.

나는 호기심 때문에 KNN, ANN과 같은 기계 학습 기능을 시험해보고 싶다. 크기가 28 * 28 픽셀 인 이미지 세트가 있습니다. 나는 자릿수 인식을 위해 기차 정류장을하고 싶다. 그래서 먼저 기차 세트와 기차를 조립해야합니다.

Mat train_data = Mat(rows, cols, CV_32FC1); 
    Mat train_classes = Mat(rows, 1, CV_32SC1); 
    Mat img = imread(image); 
    Mat float_data(1, cols, CV_32FC1); 
    img.convertTo(float_data, CV_32FC1); 

어떻게 float_data와 train_data을 채우기 위해?

for (int i = 0; i < train_data.rows; ++i) 
{ 
    ... // image is a string which contains next image path 
    image = imread(image); 
    img.convertTo(float_data, CV_32FC1); 
    for(int x = 0; x < train_data.cols; x++){ 
     train_data.at<float> (i, x) = float_data.at<float>(x);; 
    } 
} 

KNearest knn; 
knn.train(train_data, train_classes); 

을했지만 작동하지 않습니다 물론이다 : 나는 그것은이 같은 떨어지게 생각했다. . . 제발, 어떻게해야하는지 말해줘. 또는 적어도 인형의 책

답변

2
Mat train_data; // initially empty 
Mat train_labels; // empty, too. 

// for each img in the train set : 
    Mat img = imread("image_path"); 
    Mat float_data; 
    img.convertTo(float_data, CV_32FC1);    // to float 
    train_data.push_back(float_data.reshape(1,1)); // add 1 row (flattened image) 
    train_labels.push_back(label_for_image);  // add 1 item 

KNearest knn; 
knn.train(train_data, train_labels); 

는 다른 ml의 algos에 대한 모든 동일합니다 :) 제안!