OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
OpenGL相互運用

詳細説明

本節ではOpenGLとの相互運用について説明する。

OpenGLサポートを有効にするには、CMakeで WITH_OPENGL=ON を指定してOpenCVを構成する。現時点でOpenGLがサポートされるのは、WindowsおよびLinux上のWIN32、GTK、Qtバックエンドのみである(MacOSとAndroidはサポートされていない)。GTK-2.0バックエンドでは gtkglext-1.0 ライブラリが必要となる。

OpenGL機能を使用するには、まずOpenGLコンテキスト(ウィンドウまたはフレームバッファ)を作成する必要がある。これは namedWindow 関数、または他のOpenGLツールキット(例えばGLUT)を用いて行える。

名前空間

namespace  cv::ogl::ocl
 

クラス

class  cv::ogl::Arrays
 OpenGL クライアントサイド頂点配列のラッパー。詳細...
 
class  cv::ogl::Buffer
 参照カウント付きの OpenGL バッファオブジェクト用スマートポインタ。詳細...
 
class  cv::ogl::Texture2D
 参照カウント付きの OpenGL 2D テクスチャメモリ用スマートポインタ。詳細...
 

列挙型

enum  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プリミティブ頂点の配列。
indices頂点インデックスの配列(ホストメモリまたはデバイスメモリ)。
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呼び出しの前に明示的に呼び出す必要がある。

引数
device0 から始まる CUDA デバイスのシステムインデックス。

◆ unmapGLBuffer()

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

#include <opencv2/core/opengl.hpp>

Buffer オブジェクトのマップを解除する(以前に Buffer からマップされた UMat を解放する)。

mapGLBuffer() 関数の呼び出しによって以前に構築された各 UMat に対して、ユーザが本関数を明示的に呼び出す必要がある。

引数
u- 入力元の UMatmapGLBuffer() によって作成される。