Я не буду включать настройку контекста OpenGL, выполнение реальных операций рендеринга и т. Д. Рассмотрим это как набросок псевдокода, просто пытающийся дать вам представление о том, как вы могли бы это сделать (при условии, что вы хотите повторно использовать выход в OpenCV:
Сначала вы создаете текстуру (должна быть сделана только один раз, конечно), затем вы загружаете данные изображения из OpenCV в созданную текстуру (или обновляете ее).
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, ...parameters based on your image, pointer to raw image data);
Теперь ваше изображение OpenCV находится в текстуре OpenGL. Позже вам просто нужно визуализировать ваше изображение и получить данные пикселей.
glViewport(0,0,imagewidth,imageheight); // has to be done once
renderTexturedQuadWithShaders();
glReadPixels(..., &pointer); // read the raw image data again
Это должно сработать, однако не забывайте, что вам придется использовать правильные форматы текстур, чтобы не испортить данные изображения, и вам, возможно, придется использовать другой буфер (сейчас я не уверен на 100%, если вы может записать данные изображения прямо в изображение OpenCV).
Редактировать: Вы можете визуализировать на экран или объект кадрового буфера, основная концепция остается прежней. Просто убедитесь, что вы рендеритесь к правильной цели.