![]() |
OpenCV 4.12.0
開源計算機視覺
|
帶有引用計數的 OpenGL 緩衝區物件智慧指標。更多...
#include <opencv2/core/opengl.hpp>
公共型別 | |
| 列舉 | Access { READ_ONLY = 0x88B8 , WRITE_ONLY = 0x88B9 , READ_WRITE = 0x88BA } |
| 列舉 | Target { ARRAY_BUFFER = 0x8892 , ELEMENT_ARRAY_BUFFER = 0x8893 , PIXEL_PACK_BUFFER = 0x88EB , PIXEL_UNPACK_BUFFER = 0x88EC } |
| 目標定義了您打算如何使用緩衝區物件。更多... | |
公共成員函式 | |
| Buffer () | |
| 建構函式。 | |
| Buffer (InputArray arr, Target target=ARRAY_BUFFER, bool autoRelease=false) | |
| Buffer (int arows, int acols, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false) | |
| Buffer (int arows, int acols, int atype, unsigned int abufId, bool autoRelease=false) | |
| Buffer (Size asize, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false) | |
| Buffer (Size asize, int atype, unsigned int abufId, bool autoRelease=false) | |
| void | bind (Target target) const |
| 將 OpenGL 緩衝區繫結到指定的緩衝區繫結點。 | |
| unsigned int | bufId () const |
| 獲取 OpenGL 物件 ID | |
| int | channels () const |
| Buffer | clone (Target target=ARRAY_BUFFER, bool autoRelease=false) const |
| 建立緩衝區物件及其底層資料的完整副本。 | |
| int | cols () const |
| void | copyFrom (InputArray arr, cuda::Stream &stream, Target target=ARRAY_BUFFER, bool autoRelease=false) |
| void | copyFrom (InputArray arr, Target target=ARRAY_BUFFER, bool autoRelease=false) |
| 將資料從主機/裝置記憶體複製到 OpenGL 緩衝區。 | |
| void | copyTo (OutputArray arr) const |
| 將資料從 OpenGL 緩衝區複製到主機/裝置記憶體或另一個 OpenGL 緩衝區物件。 | |
| void | copyTo (OutputArray arr, cuda::Stream &stream) const |
| void | create (int arows, int acols, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false) |
| 為 ogl::Buffer 物件分配記憶體。 | |
| void | create (Size asize, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false) |
| int | depth () const |
| int | elemSize () const |
| int | elemSize1 () const |
| bool | empty () const |
| cuda::GpuMat | mapDevice () |
| 對映到裝置記憶體(阻塞) | |
| cuda::GpuMat | mapDevice (cuda::Stream &stream) |
| 將 OpenGL 緩衝區對映到 CUDA 裝置記憶體。 | |
| Mat | mapHost (Access access) |
| 將 OpenGL 緩衝區對映到主機記憶體。 | |
| void | release () |
| 遞減引用計數器,並在需要時銷燬緩衝區物件。 | |
| int | rows () const |
| void | setAutoRelease (bool flag) |
| 設定自動釋放模式。 | |
| Size | size () const |
| int | type () const |
| void | unmapDevice () |
| void | unmapDevice (cuda::Stream &stream) |
| 取消對映 OpenGL 緩衝區。 | |
| void | unmapHost () |
| 取消對映 OpenGL 緩衝區。 | |
靜態公共成員函式 | |
| static void | unbind (Target target) |
| 從指定的繫結點解除繫結任何緩衝區。 | |
帶有引用計數的 OpenGL 緩衝區物件智慧指標。
緩衝區物件是 OpenGL 物件,用於儲存由 OpenGL 上下文分配的未格式化記憶體陣列。它們可用於儲存頂點資料、從影像或幀緩衝區檢索的畫素資料以及各種其他資料。
ogl::Buffer 具有類似於 Mat 介面的介面,並表示 2D 陣列記憶體。
ogl::Buffer 支援主機和裝置之間的記憶體傳輸,也可以對映到 CUDA 記憶體。
| cv::ogl::Buffer::Buffer | ( | ) |
建構函式。
建立空的 ogl::Buffer 物件,從現有緩衝區(abufId 引數)建立 ogl::Buffer 物件,為 ogl::Buffer 物件分配記憶體或從主機/裝置記憶體複製資料。
| cv::ogl::Buffer::Buffer | ( | int | arows, |
| int | acols, | ||
| int | atype, | ||
| unsigned int | abufId, | ||
| bool | autoRelease = false ) |
這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。
| arows | 二維陣列中的行數。 |
| acols | 二維陣列中的列數。 |
| atype | 陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat。 |
| abufId | 緩衝區物件名稱。 |
| autoRelease | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
| cv::ogl::Buffer::Buffer | ( | Size | asize, |
| int | atype, | ||
| unsigned int | abufId, | ||
| bool | autoRelease = false ) |
這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。
| asize | 2D 陣列大小。 |
| atype | 陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat。 |
| abufId | 緩衝區物件名稱。 |
| autoRelease | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
| cv::ogl::Buffer::Buffer | ( | int | arows, |
| int | acols, | ||
| int | atype, | ||
| Target | target = ARRAY_BUFFER, | ||
| bool | autoRelease = false ) |
這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。
| arows | 二維陣列中的行數。 |
| acols | 二維陣列中的列數。 |
| atype | 陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat。 |
| target | 緩衝區用途。詳見 cv::ogl::Buffer::Target 。 |
| autoRelease | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
| cv::ogl::Buffer::Buffer | ( | Size | asize, |
| int | atype, | ||
| Target | target = ARRAY_BUFFER, | ||
| bool | autoRelease = false ) |
這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。
| asize | 2D 陣列大小。 |
| atype | 陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat。 |
| target | 緩衝區用途。詳見 cv::ogl::Buffer::Target 。 |
| autoRelease | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
|
顯式 |
這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。
| arr | 輸入陣列(主機或裝置記憶體,可以是 Mat 、 cuda::GpuMat 或 std::vector )。 |
| target | 緩衝區用途。詳見 cv::ogl::Buffer::Target 。 |
| autoRelease | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
| void cv::ogl::Buffer::bind | ( | Target | target | ) | const |
將 OpenGL 緩衝區繫結到指定的緩衝區繫結點。
| target | 繫結點。詳見 cv::ogl::Buffer::Target 。 |
| unsigned int cv::ogl::Buffer::bufId | ( | ) | const |
獲取 OpenGL 物件 ID
| int cv::ogl::Buffer::channels | ( | ) | const |
| Buffer cv::ogl::Buffer::clone | ( | Target | target = ARRAY_BUFFER, |
| bool | autoRelease = false ) const |
建立緩衝區物件及其底層資料的完整副本。
| target | 目標緩衝區的緩衝區用途。 |
| autoRelease | 目標緩衝區的自動釋放模式。 |
| int cv::ogl::Buffer::cols | ( | ) | const |
| void cv::ogl::Buffer::copyFrom | ( | InputArray | arr, |
| cuda::Stream & | 流, | ||
| Target | target = ARRAY_BUFFER, | ||
| bool | autoRelease = false ) |
這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。
| void cv::ogl::Buffer::copyFrom | ( | InputArray | arr, |
| Target | target = ARRAY_BUFFER, | ||
| bool | autoRelease = false ) |
將資料從主機/裝置記憶體複製到 OpenGL 緩衝區。
| arr | 輸入陣列(主機或裝置記憶體,可以是 Mat 、 cuda::GpuMat 或 std::vector )。 |
| target | 緩衝區用途。詳見 cv::ogl::Buffer::Target 。 |
| autoRelease | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
| void cv::ogl::Buffer::copyTo | ( | OutputArray | arr | ) | const |
將資料從 OpenGL 緩衝區複製到主機/裝置記憶體或另一個 OpenGL 緩衝區物件。
| arr | 目標陣列(主機或裝置記憶體,可以是 Mat 、 cuda::GpuMat 、 std::vector 或 ogl::Buffer )。 |
| void cv::ogl::Buffer::copyTo | ( | OutputArray | arr, |
| cuda::Stream & | stream ) const |
這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。
| void cv::ogl::Buffer::create | ( | int | arows, |
| int | acols, | ||
| int | atype, | ||
| Target | target = ARRAY_BUFFER, | ||
| bool | autoRelease = false ) |
為 ogl::Buffer 物件分配記憶體。
| arows | 二維陣列中的行數。 |
| acols | 二維陣列中的列數。 |
| atype | 陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat。 |
| target | 緩衝區用途。詳見 cv::ogl::Buffer::Target 。 |
| autoRelease | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
| void cv::ogl::Buffer::create | ( | Size | asize, |
| int | atype, | ||
| Target | target = ARRAY_BUFFER, | ||
| bool | autoRelease = false ) |
這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。
| asize | 2D 陣列大小。 |
| atype | 陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat。 |
| target | 緩衝區用途。詳見 cv::ogl::Buffer::Target 。 |
| autoRelease | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
| int cv::ogl::Buffer::depth | ( | ) | const |
| int cv::ogl::Buffer::elemSize | ( | ) | const |
| int cv::ogl::Buffer::elemSize1 | ( | ) | const |
| bool cv::ogl::Buffer::empty | ( | ) | const |
| cuda::GpuMat cv::ogl::Buffer::mapDevice | ( | ) |
對映到裝置記憶體(阻塞)
| cuda::GpuMat cv::ogl::Buffer::mapDevice | ( | cuda::Stream & | 流 | ) |
將 OpenGL 緩衝區對映到 CUDA 裝置記憶體。
此操作不復制資料。多個緩衝區物件可以同時對映到 CUDA 記憶體。
對映的資料儲存在使用其緩衝區物件之前必須透過 ogl::Buffer::unmapDevice 解除對映。
將 OpenGL 緩衝區對映到主機記憶體。
mapHost 將緩衝區物件的整個資料儲存對映到客戶端的地址空間。然後,可以根據指定的訪問策略,直接讀取和/或寫入相對於返回指標的資料。
對映的資料儲存在使用其緩衝區物件之前必須透過 ogl::Buffer::unmapHost 解除對映。
此操作可能導致主機和裝置之間的記憶體傳輸。
一次只能對映一個緩衝區物件。
| access | 訪問策略,指示是否可以從緩衝區物件的對映資料儲存中讀取、寫入或同時讀取和寫入。符號常量必須是 ogl::Buffer::READ_ONLY 、 ogl::Buffer::WRITE_ONLY 或 ogl::Buffer::READ_WRITE 。 |
| void cv::ogl::Buffer::release | ( | ) |
遞減引用計數器,並在需要時銷燬緩衝區物件。
該函式將呼叫 setAutoRelease(true) 。
| int cv::ogl::Buffer::rows | ( | ) | const |
| void cv::ogl::Buffer::setAutoRelease | ( | bool | flag | ) |
設定自動釋放模式。
OpenGL 物件的生命週期與上下文的生命週期繫結。如果 OpenGL 上下文繫結到視窗,則可以在任何時候釋放它(使用者可以關閉視窗)。如果在上下文銷燬後呼叫物件的解構函式,則會導致錯誤。因此,ogl::Buffer 預設不會在解構函式中銷燬 OpenGL 物件(所有 OpenGL 資源都將隨 OpenGL 上下文一起釋放)。此函式可以強制 ogl::Buffer 解構函式銷燬 OpenGL 物件。
| flag | 自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。 |
| Size cv::ogl::Buffer::size | ( | ) | const |
| int cv::ogl::Buffer::type | ( | ) | const |
|
static |
從指定的繫結點解除繫結任何緩衝區。
| target | 繫結點。詳見 cv::ogl::Buffer::Target 。 |
| void cv::ogl::Buffer::unmapDevice | ( | ) |
| void cv::ogl::Buffer::unmapDevice | ( | cuda::Stream & | 流 | ) |
取消對映 OpenGL 緩衝區。
| void cv::ogl::Buffer::unmapHost | ( | ) |
取消對映 OpenGL 緩衝區。