OpenCV 4.11.0
开源计算机视觉库
|
本节描述 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 对象(释放先前从 Buffer 映射的 UMat)。 | |
#include <opencv2/core/opengl.hpp>
渲染模式
void cv::ogl::convertFromGLTexture2D | ( | const Texture2D & | texture, |
OutputArray | dst ) |
#include <opencv2/core/opengl.hpp>
将 Texture2D 对象转换为 OutputArray。
texture | - 源 Texture2D 对象。 |
dst | - 目标 OutputArray。 |
void cv::ogl::convertToGLTexture2D | ( | InputArray | src, |
Texture2D & | texture ) |
#include <opencv2/core/opengl.hpp>
将 InputArray 转换为 Texture2D 对象。
src | - 源 InputArray。 |
texture | - 目标 Texture2D 对象。 |
UMat cv::ogl::mapGLBuffer | ( | const Buffer & | buffer, |
AccessFlag | accessFlags = ACCESS_READ|ACCESS_WRITE ) |
#include <opencv2/core/opengl.hpp>
将 Buffer 对象映射到 CL 端进行处理(转换为 UMat)。
该函数从GL缓冲区创建CL缓冲区,然后构建一个UMat,可以使用OpenCV函数处理缓冲区数据。请注意,在当前实现中,以这种方式构建的UMat不拥有相应的GL缓冲区对象,因此用户有责任通过显式调用unmapGLBuffer()函数来关闭CL/GL缓冲区之间的关系。
buffer | - 源Buffer 对象。 |
accessFlags | - 数据访问标志 (ACCESS_READ|ACCESS_WRITE)。 |
void cv::ogl::render | ( | const Arrays & | arr, |
InputArray | indices, | ||
int | mode = POINTS, | ||
Scalar | color = Scalar::all(255) ) |
#include <opencv2/core/opengl.hpp>
这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。
arr | 原始顶点数组。 |
indices | 顶点索引数组(主机或设备内存)。 |
mode | 渲染模式。 cv::ogl::RenderModes 之一 |
color | 所有顶点的颜色。如果arr不包含颜色数组,将使用此颜色。 |
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不包含颜色数组,将使用此颜色。 |
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 | 要绘制的纹理区域(规范化坐标)。 |
void cv::cuda::setGlDevice | ( | int | device = 0 | ) |
#include <opencv2/core/opengl.hpp>
为当前线程设置 CUDA 设备并将其初始化为具有 OpenGL 互操作性的设备。
在创建OpenGL上下文之后以及进行任何CUDA调用之前,应显式调用此函数。
device | CUDA设备的系统索引,从0开始。 |
void cv::ogl::unmapGLBuffer | ( | UMat & | u | ) |
#include <opencv2/core/opengl.hpp>
取消映射 Buffer 对象(释放先前从 Buffer 映射的 UMat)。
对于先前通过调用mapGLBuffer() 函数创建的每个UMat,用户必须显式调用此函数。
u | - 源UMat,由mapGLBuffer()创建。 |