0

AutotunedIndexParams を使用した openCV 2.4.2 flann インデックス作成に問題があります。複数の画像を使用してインデックスを作成すると、プログラムは次の出力で終了します。

trees : 1
terminate called throwing an exception

これは、エラーが次のJavaCVの同等のコードに対して発生する同様のエラーです。

trees : 1
Exception in thread "main" java.lang.RuntimeException: Missing parameter 'algorithm' in the parameters given
    at com.googlecode.javacv.cpp.opencv_flann$Index.allocate(Native Method)
    at com.googlecode.javacv.cpp.opencv_flann$Index.<init>(opencv_flann.java:229)

openCVs miniflann.cpp でp["algorithm"]、設定されている複数の行を見つけました。問題と関係があるのでしょうか?

ここで私の C++ コードをテストするために、必要に応じて Java コードも投稿します ;-)

#include <iostream>

#include <opencv2/core/core.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/nonfree/nonfree.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/flann/flann.hpp>

using namespace cv;
using namespace std;
using namespace flann;

int main( int argc, char** argv ) {
    string pathToImages = "/Users/anubis/Desktop/KeypointTest/";

    string img_1 = "book_001_canon.jpg";
    string img_2 = "book_002_canon.jpg";
    string img_3 = "book_003_canon.jpg";
    string img_4 = "book_004_canon.jpg";

    Mat db_image_1 = imread(pathToImages + img_1, CV_LOAD_IMAGE_COLOR);
    Mat db_image_2 = imread(pathToImages + img_2, CV_LOAD_IMAGE_COLOR);
    Mat db_image_3 = imread(pathToImages + img_3, CV_LOAD_IMAGE_COLOR);
    Mat db_image_4 = imread(pathToImages + img_4, CV_LOAD_IMAGE_COLOR);

    vector<KeyPoint> db_keypoints_1;
    vector<KeyPoint> db_keypoints_2;
    vector<KeyPoint> db_keypoints_3;
    vector<KeyPoint> db_keypoints_4;

    Mat db_descriptors_1;
    Mat db_descriptors_2;
    Mat db_descriptors_3;
    Mat db_descriptors_4;

    Mat db_descriptor;

    SurfFeatureDetector detector(400, 4, 2, true, true);
    SurfDescriptorExtractor extractor;

    detector.detect(db_image_1, db_keypoints_1);
    detector.detect(db_image_2, db_keypoints_2);
    detector.detect(db_image_3, db_keypoints_3);
    detector.detect(db_image_4, db_keypoints_4);

    extractor.compute(db_image_1, db_keypoints_1, db_descriptors_1);
    extractor.compute(db_image_2, db_keypoints_2, db_descriptors_2);
    extractor.compute(db_image_3, db_keypoints_3, db_descriptors_3);
    extractor.compute(db_image_4, db_keypoints_4, db_descriptors_4);

    db_descriptor.push_back(db_descriptors_1);
    db_descriptor.push_back(db_descriptors_2);
    db_descriptor.push_back(db_descriptors_3);
    db_descriptor.push_back(db_descriptors_4);

    IndexParams indexParams = *new AutotunedIndexParams();

    Index flannIndex = *new Index(db_descriptor, indexParams);

    return 0;
}

画像はここにあります: images

4

0 に答える 0