Ваша реализация аналогична показанной этим блогером .Вы должны прочитать этот блог, чтобы увидеть, пропустили ли вы что-нибудь в своей реализации.
Если ваши Mat
объекты дороги в создании / копировании, вам следует избегать их постоянного создания / копирования / удаления.Вместо этого у вас должен быть пул (он же свободный список) объектов Mat, который постоянно получает переработанных в какой-то конвейерной архитектуре.Я описываю этот тип архитектуры в этом ответе на связанный вопрос.
В этом ответе я предложил использовать стек блокировки для реализации пула, но вы также можете использовать свою блокировку circular_buffer
.Причина, по которой я предложил стек, заключалась в том, что я думал, что он может быть более кеш-ориентированным, но на самом деле я никогда не измерял, будет ли он иметь значение.