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() 建立。