OpenCV  4.10.0
开源计算机视觉
加载中...
搜索中...
没有匹配
命名空间 | | 枚举 | 函数
OpenGL互操作性

详细说明

本节介绍OpenGL互操作性。

要启用OpenGL支持,请使用WITH_OPENGL=ON配置OpenCV并使用CMake。目前OpenGL仅在Windows、GTK和Qt后端上支持WIN32,Linux(MacOS和Android不受支持)。对于GTK后端,需要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对象(释放之前从Buffer映射的UMat)。
 

枚举类型文档

◆ 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缓冲区对象,因此关闭CL/GL缓冲区关系是用户的责任,通过显式调用 unmapGLBuffer() 函数。

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

◆ render() [1/3]

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

#include <opencv2/core/opengl.hpp>

这是一个为方便提供重载成员函数,它仅与上述函数在接受的参数上有所不同。

参数
arr基本点 vertices 数组。
indicesvertices 索引数组(主机或设备内存)。
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基本点 vertices 数组。
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对象(释放之前从Buffer映射的UMat)。

函数必须由用户显式调用,以便处理之前通过调用mapGLBuffer()函数创建的每个UMat

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