C ++ управляет большим буфером изображений - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть приложение на C ++, которое читает и обрабатывает видеопоток.У меня есть два потока: один поток для чтения потока и второй поток для обработки.Я получаю доступ к потоку с помощью OpenCV VideoCapture и помещаю кадры (cv::Mat) в буфер readerwriterqueue .Из другого потока я читаю кадры из буфера и обрабатываю их.

Иногда обработка может занимать много времени, и поток обработки начинает отставать (в то время как кадры помещаются в очередь с той же скоростью).Это увеличивает размер буфера и может в конечном итоге занять всю доступную память и повредить всю систему.Я знаю, что Windows использует файл подкачки, если не хватает оперативной памяти, но система все еще становится довольно медленной.Мне нужно убедиться, что этого не произойдет.

Я думал об установке ограничения размера буфера и разгрузки кадров на диск, когда буфер заполнен.Затем прочитайте их обратно в очередь, когда есть место.Будет ли это работать?Есть ли хорошие альтернативы?Как справиться с такой проблемой?Является ли мой текущий подход (очередь изображений) действительным?Пожалуйста, совет.

...