Работу с кадрами (чтение, грейскейл) следует выполнять с помощью FrameHandler. На данный момент это происходит не так. Внутри этого класса своя реализация чтения видео.
cv::VideoCapture способно считывать любую последовательность изображений, не обязательно видео, можно и набор изображений по какому-то пути (из папки, например).
Это не успел сделать