OpenCV 4.10.0
开源计算机视觉
|
本节介绍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)。 | |
enum cv::ogl::RenderModes |
#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缓冲区,然后构造一个可以与OpenCV函数一起处理缓冲区数据的 UMat。注意,在当前实现中,以这种方式构造的 UMat 不拥有相应的GL缓冲区对象,因此关闭CL/GL缓冲区关系是用户的责任,通过显式调用 unmapGLBuffer() 函数。
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 | 基本点 vertices 数组。 |
indices | vertices 索引数组(主机或设备内存)。 |
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 | 基本点 vertices 数组。 |
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 | 从0开始的系统CUDA设备索引。 |
void cv::ogl::unmapGLBuffer | ( | UMat & | u | ) |
#include <opencv2/core/opengl.hpp>
解除映射Buffer对象(释放之前从Buffer映射的UMat)。
函数必须由用户显式调用,以便处理之前通过调用mapGLBuffer()函数创建的每个UMat。
u | - 源UMat,由mapGLBuffer()函数创建。 |