OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
OpenGL 互操作性

详细描述

本节介绍了 OpenGL 互操作性。

要启用 OpenGL 支持,请使用 CMake 配置 OpenCV,并将 WITH_OPENGL=ON。目前,OpenGL 仅在 Windows 和 Linux 上的 WIN32、GTK 和 Qt 后端中受支持(不支持 MacOS 和 Android)。对于 GTK-2.0 后端,需要 gtkglext-1.0 库。

要使用 OpenGL 功能,您应该首先创建 OpenGL 上下文(窗口或帧缓冲区)。您可以使用 namedWindow 函数或其他 OpenGL 工具包(例如,GLUT)来执行此操作。

命名空间

命名空间  cv::ogl::ocl
 

类  cv::ogl::Arrays
 OpenGL 客户端顶点数组的包装器。 更多...
 
类  cv::ogl::Buffer
 具有引用计数的 OpenGL 缓冲区对象的智能指针。 更多...
 
类  cv::ogl::Texture2D
 具有引用计数的 OpenGL 2D 纹理内存的智能指针。 更多...
 

枚举

枚举  cv::ogl::RenderModes {
  cv::ogl::POINTS = 0x0000 ,
  cv::ogl::LINES = 0x0001 ,
  cv::ogl::LINE_LOOP = 0x0002 ,
  cv::ogl::LINE_STRIP = 0x0003 ,
  cv::ogl::TRIANGLES = 0x0004 ,
  cv::ogl::TRIANGLE_STRIP = 0x0005 ,
  cv::ogl::TRIANGLE_FAN = 0x0006 ,
  cv::ogl::QUADS = 0x0007 ,
  cv::ogl::QUAD_STRIP = 0x0008 ,
  cv::ogl::POLYGON = 0x0009
}
 渲染模式 更多...
 

函数

void cv::ogl::convertFromGLTexture2D (const Texture2D &texture, OutputArray dst)
 Texture2D 对象转换为 OutputArray。
 
void cv::ogl::convertToGLTexture2D (InputArray src, Texture2D &texture)
 将 InputArray 转换为 Texture2D 对象。
 
UMat cv::ogl::mapGLBuffer (const Buffer &buffer, AccessFlag accessFlags=ACCESS_READ|ACCESS_WRITE)
 映射 Buffer 对象以在 CL 端进行处理(转换为 UMat)。
 
void cv::ogl::render (const Arrays &arr, InputArray indices, int mode=POINTS, Scalar color=Scalar::all(255))
 
void cv::ogl::render (const Arrays &arr, int mode=POINTS, Scalar color=Scalar::all(255))
 
void cv::ogl::render (const Texture2D &tex, Rect_< double > wndRect=Rect_< double >(0.0, 0.0, 1.0, 1.0), Rect_< double > texRect=Rect_< double >(0.0, 0.0, 1.0, 1.0))
 渲染 OpenGL 纹理或图元。
 
void cv::cuda::setGlDevice (int device=0)
 设置 CUDA 设备并使用 OpenGL 互操作性为当前线程初始化它。
 
void cv::ogl::unmapGLBuffer (UMat &u)
 取消映射 Buffer 对象(释放 UMat,先前从 Buffer 映射)。
 

枚举类型文档

◆ RenderModes

#include <opencv2/core/opengl.hpp>

渲染模式

枚举器
POINTS 
Python: cv.ogl.POINTS
LINES 
Python: cv.ogl.LINES
LINE_LOOP 
Python: cv.ogl.LINE_LOOP
LINE_STRIP 
Python: cv.ogl.LINE_STRIP
TRIANGLES 
Python: cv.ogl.TRIANGLES
TRIANGLE_STRIP 
Python: cv.ogl.TRIANGLE_STRIP
TRIANGLE_FAN 
Python: cv.ogl.TRIANGLE_FAN
QUADS 
Python: cv.ogl.QUADS
QUAD_STRIP 
Python: cv.ogl.QUAD_STRIP
POLYGON 
Python: cv.ogl.POLYGON

函数文档

◆ convertFromGLTexture2D()

void cv::ogl::convertFromGLTexture2D ( const Texture2D & texture,
OutputArray dst )

#include <opencv2/core/opengl.hpp>

Texture2D 对象转换为 OutputArray。

参数
texture- 源 Texture2D 对象。
dst- 目标 OutputArray。

◆ convertToGLTexture2D()

void cv::ogl::convertToGLTexture2D ( InputArray src,
Texture2D & texture )

#include <opencv2/core/opengl.hpp>

将 InputArray 转换为 Texture2D 对象。

参数
src- 源 InputArray。
texture- 目标 Texture2D 对象。

◆ mapGLBuffer()

UMat cv::ogl::mapGLBuffer ( const Buffer & buffer,
AccessFlag accessFlags = ACCESS_READ|ACCESS_WRITE )

#include <opencv2/core/opengl.hpp>

映射 Buffer 对象以在 CL 端进行处理(转换为 UMat)。

此函数从 GL 缓冲区创建 CL 缓冲区,然后构造可用于使用 OpenCV 函数处理缓冲区数据的 UMat。 请注意,在当前实现中,以此方式构造的 UMat 不拥有相应的 GL 缓冲区对象,因此用户有责任通过显式调用 unmapGLBuffer() 函数来关闭 CL/GL 缓冲区关系。

参数
buffer- 源 Buffer 对象。
accessFlags- 数据访问标志 (ACCESS_READ|ACCESS_WRITE)。
返回
返回 UMat 对象

◆ render() [1/3]

void cv::ogl::render ( const Arrays & arr,
InputArray 索引,
int mode = POINTS,
Scalar color = Scalar::all(255) )

#include <opencv2/core/opengl.hpp>

这是一个重载的成员函数,为方便起见而提供。它与上述函数的不同之处仅在于它接受的参数。

参数
arr基本体顶点的数组。
索引顶点索引数组(主机或设备内存)。
mode渲染模式。 cv::ogl::RenderModes 之一
color所有顶点的颜色。 如果 arr 不包含颜色数组,则将使用此颜色。

◆ render() [2/3]

void cv::ogl::render ( const Arrays & arr,
int mode = POINTS,
Scalar color = Scalar::all(255) )

#include <opencv2/core/opengl.hpp>

这是一个重载的成员函数,为方便起见而提供。它与上述函数的不同之处仅在于它接受的参数。

参数
arr基本体顶点的数组。
mode渲染模式。 cv::ogl::RenderModes 之一
color所有顶点的颜色。 如果 arr 不包含颜色数组,则将使用此颜色。

◆ render() [3/3]

void cv::ogl::render ( const Texture2D & tex,
Rect_< double > wndRect = Rect_< double >(0.0, 0.0, 1.0, 1.0),
Rect_< double > texRect = Rect_< double >(0.0, 0.0, 1.0, 1.0) )

#include <opencv2/core/opengl.hpp>

渲染 OpenGL 纹理或图元。

参数
tex要绘制的纹理。
wndRect要在其中绘制纹理的窗口区域(归一化坐标)。
texRect要绘制的纹理区域(归一化坐标)。

◆ setGlDevice()

void cv::cuda::setGlDevice ( int device = 0)

#include <opencv2/core/opengl.hpp>

设置 CUDA 设备并使用 OpenGL 互操作性为当前线程初始化它。

此函数应在 OpenGL 上下文创建之后以及任何 CUDA 调用之前显式调用。

参数
device从 0 开始的 CUDA 设备的系统索引。

◆ unmapGLBuffer()

void cv::ogl::unmapGLBuffer ( UMat & u)

#include <opencv2/core/opengl.hpp>

取消映射 Buffer 对象(释放 UMat,先前从 Buffer 映射)。

对于先前通过调用 mapGLBuffer() 函数构造的每个 UMat,用户都必须显式调用此函数。

参数
u- 源 UMat,由 mapGLBuffer() 创建。