Использование нескольких тысяч 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
, и это даже медленнее.
РЕДАКТИРОВАТЬ
Кстати, мне нужен только "немедленный" режим рендеринга.Я не изменяю виджеты после того, как они показаны.