OpenCV - остановка программы при выполнении шага определения ключевых точек изображения

0

Я пытаюсь разработать c++ реализацию пакета визуального слова, используя библиотеку opencv

Я начал с тестирования функции обнаружения ключевых точек, но когда я вставляю эту инструкцию

detector->detect(img, keypoints); , программа перестает запускать @первое изображение без какого-либо исключения.

Может ли кто-нибудь помочь мне решить эту проблему?

благодаря

void extractTrainingVocabulary(const path& basepath) {
for (directory_iterator iter = directory_iterator(basepath); iter
        != directory_iterator(); iter++) {
    directory_entry entry = *iter;

    if (is_directory(entry.path())) {

        cout << "Processing directory " << entry.path().string() << endl;
        extractTrainingVocabulary(entry.path());

    } else {

        path entryPath = entry.path();
        if (entryPath.extension() == ".jpg") {

            cout << "Processing file " << entryPath.string() << endl;

            Mat img = imread(entryPath.string());
            if (!img.empty())
            {

                cout << "not empty"<< endl;


                try{
                    // ...
                    vector<KeyPoint> keypoints;
                    cout << "not empty"<< keypoints.empty()<<endl;
                    //detector->detect(img, keypoints);
                } catch (const std::exception& ex) {
                }



            }
            else
            {
                cout << " empty"<< endl;

            }
        }
    }
}
}
Теги:
opencv

1 ответ

1

Предполагая, что функция detector-> detect() в этом коде фактически не комментируется в вашей реализации. Мое единственное предположение заключалось в том, что функция img.empty() не возвращает правильное значение. Метод OpenCV для проверки правильности загруженного изображения использует элемент данных image.data как таковой:

if(! image.data )  // Check for invalid input
{
    cout <<  "Could not open or find the image" << std::endl ;
    return -1;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню