Ist es möglich OpenCV GpuMat als OpenGL Textur zu binden?

8

Ich konnte keine Referenz finden außer:

Ссылка

diskutiert einen CUDA-Ansatz.

Idealerweise möchte ich eine OpenGL-Textur mit dem Inhalt von cv::gpu::GpuMat aktualisieren, ohne sie in die CPU zu kopieren und ohne CUDA direkt zu verwenden (obwohl ich vermute, dass dies notwendig ist, bis diese Funktion hinzugefügt wird).

>     
Elliot Woods 06.08.2013, 17:19
quelle

2 Antworten

11

OpenCV hat OpenGL-Unterstützung. Siehe opencv2/core/opengl_interop.hpp Header-Datei. Sie können den Inhalt von GpuMat in Textur kopieren:

%Vor%

Sie können auch cv::ogl::Buffer class verwenden. Es ist ein Wrapper für OpenGL-Pufferspeicher. Dieser Speicher kann CUDA-Speicher ohne Speicherkopie zugeordnet werden:

%Vor%     
jet47 07.08.2013, 14:49
quelle
4

Nun, hier ist mein Verständnis, vielleicht nicht 100% korrekt, und entschuldige mich für mein Nicht-Mutter-Lang-Englisch.

GpuMat verwendet Globaler Speicher . OpenGL-Texturen befinden sich jedoch im Texturspeicher , der speziell für die Textur-Hardware der GPU (nicht für CUDA-Kerne) entwickelt wurde. Textur mem sind nicht wie üblich lineare 2D / 3D-Arrays organisiert, sondern können bestimmte Space Filling Curve verwenden, um den Inhalt zu organisieren um die Textur-Cache-Rate zu optimieren. Daher können Sie keinen Gerätezeiger auf Texture legen. Sie können Textur-Mem nur direkt in CUDA über Texture Fetch (Read Only) oder Surface R / W aufrufen.

Die aktuelle OpenCV-Implementierung scheint keine Cuda-Textur / Oberflächenfunktion zu verwenden. Sie müssen aus Texturen in den globalen Speicher kopieren, um sie als GpuMat s zu binden. Nun, nicht ganz eine "bind" Lösung.

Dieser Thread beschreibt einen CUDA-Ansatz, der in OpenGL-Texturen schreibt.

Warten Sie entweder auf OpenCV, um die neue Funktion zu implementieren, oder warten Sie NVIDIAs neue GPU-Architektur, die Texture Mem und Global Mem vereint, oder warten Sie jemanden, der ein spezielles EMP-Gerät erfindet, um diese Erinnerungen zu hacken ... XD

    
Kh40tiK 18.09.2013 04:45
quelle

Tags und Links