C++ OpenCV:是否可以使用它执行openGL像素着色?

C++ OpenCV:是否可以使用它执行openGL像素着色?,c++,opengl,opencv,pixel,shader,C++,Opengl,Opencv,Pixel,Shader,如何在openCV图像结构上执行OpenGL像素着色器?OpenCV有任何库或插件吗?当然可以,只需将图像作为OpenGL纹理上传,绘制纹理映射的四元体,并使用片段着色器绘制到另一个具有帧缓冲区对象的纹理中 您可以多次执行此操作,然后将纹理数据读回CPU以获得最终图像。当然可以,只需将图像上载为OpenGL纹理,绘制纹理映射的四元体,然后使用片段着色器绘制到具有帧缓冲区对象的另一个纹理中即可 你可以多次这样做,然后将纹理数据读回CPU,得到最终的图像。 < P>我不包括设置OpenGL上下文,执

如何在openCV图像结构上执行OpenGL像素着色器?OpenCV有任何库或插件吗?

当然可以,只需将图像作为OpenGL纹理上传,绘制纹理映射的四元体,并使用片段着色器绘制到另一个具有帧缓冲区对象的纹理中


您可以多次执行此操作,然后将纹理数据读回CPU以获得最终图像。

当然可以,只需将图像上载为OpenGL纹理,绘制纹理映射的四元体,然后使用片段着色器绘制到具有帧缓冲区对象的另一个纹理中即可


你可以多次这样做,然后将纹理数据读回CPU,得到最终的图像。

< P>我不包括设置OpenGL上下文,执行实际渲染操作等。把它当作伪代码中的一个轮廓,只是想给你一个如何做的想法(假设你想重用OpenCV的输出:

)。 首先创建一个纹理(对于coirse,只能创建一次),然后将图像数据从OpenCV上载到创建的纹理(或更新它)

现在,您的OpenCV图像位于OpenGL纹理中。稍后,您只需渲染图像并检索像素数据

glViewport(0,0,imagewidth,imageheight); // has to be done once
renderTexturedQuadWithShaders();
glReadPixels(..., &pointer); // read the raw image data again
这应该是可行的,但是不要忘记,你必须使用正确的纹理格式来避免弄乱你的图像数据,你可能需要使用另一个缓冲区(现在我不能100%确定你是否可以将图像数据直接写入你的OpenCV图像)


编辑:您可以向屏幕或帧缓冲对象渲染,基本概念保持不变。只需确保渲染到正确的目标。

< P>我不包括设置OpenGL上下文、执行实际渲染操作等。将其视为伪代码中的提纲,只想给您一个如何实现它的思路。(假设您希望重用OpenCV中的输出:

首先创建一个纹理(对于coirse,只能创建一次),然后将图像数据从OpenCV上载到创建的纹理(或更新它)

现在,您的OpenCV图像位于OpenGL纹理中。稍后,您只需渲染图像并检索像素数据

glViewport(0,0,imagewidth,imageheight); // has to be done once
renderTexturedQuadWithShaders();
glReadPixels(..., &pointer); // read the raw image data again
这应该是可行的,但是不要忘记,你必须使用正确的纹理格式来避免弄乱你的图像数据,你可能需要使用另一个缓冲区(现在我不能100%确定你是否可以将图像数据直接写入你的OpenCV图像)


编辑:您可以渲染到屏幕或帧缓冲区对象,基本概念保持不变。只需确保渲染到正确的目标。

是否有关于如何执行此操作的文章或示例代码演示,或者您是否可以在此处提供?是否有关于如何执行此操作的文章或示例代码演示,或者您是否可以在此处提供?