Какую функцию использовать для замены `set (" итерации ", итерации)` в OpenCV 3.0+ для cv :: DualTVL1OpticalFlow - PullRequest
0 голосов
/ 30 января 2019

Проблема

Ранее у меня был какой-то код, который выглядел так:

std::unique_ptr<cv::Ptr<cv::DenseOpticalFlow()>> x;
//...
x.reset(new cv::Ptr<cv::DenseOpticalFlow>());
*x = cv::createOptFlow_DualTVL1();
(*x)->set("iterations", 100);

Однако этот код из OpenCV 2.4.xx и больше не компилируется в OpenCV 3.0+.Чтобы исправить это, я искал, как это сделать в новом API.

Я изменил приведенный выше код на что-то вроде:

std::unique_ptr<cv::Ptr<cv::DualTVL1OpticalFlow()>> x;
//...
x.reset(nullptr);
*x = cv::createOptFlow_DualTVL1();
(*x)->setIterations(100); //fails to compile this line

только чтобы обнаружить, что мой новый пример не смогкомпилировать, потому что у него не было функции setIterations.Я понял, что DualTVL1OpticalFlow, который использовал этот код, был внутри <opencv2/video/tracking.hpp> и что на самом деле есть два DualTVL1OpticalFlow, один в слежении и один в superres.

Фон

Первый и тот, который соответствует файлу, уже включенному из старой версии кода, находится здесь и имеет две функции, которые соответствуютитерации, setInnerIterations() и setOuterIterations().

Второй найден полностью в другом пути к файлу, найден здесь и имеет только один метод для установки итераций, setIterations()

Я не знаю, как перевести этот метод на новую версию.версия отслеживания класса имеет документацию, но ничего не упоминает о внутренних и внешних итерациях в описании параметра алгоритма здесь :

  • member int итераций Используется число итераций критерия остановкив числовой схеме.

И, повторюсь, в этом классе нет члена, соответствующего следующему описанию, определение setInnerIterations():

Внутренние итерации (между фильтрацией выбросов), используемые в числовой схеме.

и описание setOuterIterations():

Используются внешние итерации (количество внутренних циклов)в числовой схеме.

кажется, что ни один из них не совпадает с одним членом «итераций критерия остановки, используемых в числовой схеме».

Я подумал, может быть, другой *Класс 1063 * помог бы, но документация по все члены пуста и нет описания параметров алгоритма .

У меня естьв журналах обновлений OpenCV пытался выяснить, что именно изменилось, чтобы увидеть, как я должен обновить эту функцию, но я не смог ее найти.Я также не уверен, как найти коммит, который добавил это изменение в репозитории OpenCV.

Вопрос

Какой из этих методов я должен использовать для замены set("iterations", iterations) в cv::DualTVL1OpticalFlow, setInnerIterations() или setOuterIterations()?или класс изменился на класс в cv::superres?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...