Низкая производительность большого количества Viz :: Widget3D в OpenCV - PullRequest
0 голосов
/ 22 сентября 2018

Использование нескольких тысяч viz :: Widget3D в OpenCV очень медленное.Я пробовал v3.4.3 и v4.0.0 в Windows с Visual Studio 2017. Этот фрагмент кода занимает более 5 секунд для выполнения синхронизированной части (t0 до t1), а затем просмотр очень прерывистый:

using namespace std;
using namespace cv;

int main()
{
  constexpr double n = 100;

  viz::Viz3d window("Viz3d");

  window.setFullScreen();
  window.showWidget("Coordinate Widget", viz::WCoordinateSystem());
  window.spinOnce();

  auto t0 = chrono::high_resolution_clock::now(); 

  for (double x = 0; x < n; x += 1)
    for (double y = 0; y < n; y += 1) 
      window.showWidget(to_string(x+y*n), viz::WArrow({x, y, 0}, {x+1, y+1, 0}, 0.02, viz::Color::bluberry()));

  auto t1 = chrono::high_resolution_clock::now(); 

  window.spin();

  fmt::print("\nTime: {}ms", chrono::duration_cast<chrono::milliseconds>(t1-t0).count());
  fmt::print("\nVersion {}.{}.{}{}\n", CV_VERSION_MAJOR, CV_VERSION_MINOR, CV_VERSION_REVISION, CV_VERSION_STATUS);
  return 0;
}

Кажется, что управление виджетами накладывает огромные накладные расходы.Есть ли другой способ отображения тысяч виджетов (текст, строки, стрелки) с низкой задержкой?Я пробовал viz::WWidgetMerger, и это даже медленнее.

РЕДАКТИРОВАТЬ

Кстати, мне нужен только "немедленный" режим рендеринга.Я не изменяю виджеты после того, как они показаны.

...