OpenCV обнаруживает и вычисляет функции изображения - PullRequest
1 голос
/ 11 марта 2020

Недавно обновленный OpenCV с 3.4.5. для OpenCV 4.2.0.

Прежде чем я последовал этому примеру сшивания: https://github.com/opencv/opencv/blob/5131619a1a4d1d3a860b5da431742cc6be945332/samples/cpp/stitching_detailed.cpp (особенно строка 480). После обновления я изменил код, чтобы он больше соответствовал этому более новому примеру: https://github.com/opencv/opencv/blob/master/samples/cpp/stitching_detailed.cpp (примечание, строка 481).

Проблема с этой новой функцией computeImageFeatures, я получаю меньше обнаруженные особенности. Более старый код с теми же изображениями дал мне 1400+ функций, но computeImageFeatures дал мне ровно 500 функций на изображение. Любые идеи, как это исправить? Я полагаю, что это также приводит к тому, что «Настройщик пучка» выходит из строя позже.

1 Ответ

1 голос
/ 11 марта 2020

Согласно документации cv::ORB::create, значение по умолчанию nfeatures аргумент 500:

Первый аргумент nfeatures, вы можете установить первый аргумент в номер терки как 2000.

Вот аргументы конструктора:

static Ptr<ORB> cv::ORB::create (int     nfeatures = 500,
                                 float   scaleFactor = 1.2f,
                                 int     nlevels = 8,
                                 int     edgeThreshold = 31,
                                 int     firstLevel = 0,
                                 int     WTA_K = 2,
                                 int     scoreType = ORB::HARRIS_SCORE,
                                 int     patchSize = 31,
                                 int     fastThreshold = 20 
                                )       

Попробуйте изменить:

if (features_type == "orb")
{
    finder = ORB::create();
}

на

if (features_type == "orb")
{
    finder = ORB::create(2000);
}

Если вы не используете ORB , но о других типах функций читайте в документации конструктора.
Я предполагаю, что у всех типов есть аргумент-ограничитель.

...