簡體   English   中英

如何將 IplImage 轉換為 GLubyte 數組?

[英]How to convert IplImage to a GLubyte array?

我有一個函數可以讀取圖像並使用各種 openCV 函數對其進行一些圖像處理。 現在,我想使用 openGL 將此圖像顯示為紋理。 為此,如何在 cv::Mat 數組到 Glubyte 數組之間執行轉換?

這取決於您的IplImage / cv::Mat的數據類型。 如果它是 CV_8U 類型,那么像素格式已經正確,您只需要:

  1. 確保您的 OpenCV 數據具有與 OpenGL 上下文相關的正確顏色格式(OpenCV 通常使用 BGR 顏色通道排序而不是 RGB)
  2. 如果您的原始圖像有一些方向,那么您需要使用cvFlip() / cv::flip()垂直翻轉它。 背后的道理是,OpenCV 的坐標系原點在左上角(y 軸向下),而 OpenGL 應用程序的原點通常在底部(y 軸向上)
  3. 使用IplImage / cv::Matdata指針字段來訪問像素數據並將其加載到 OpenGL 中。

如果您的圖像數據的格式不是 CV_8U,那么您需要首先使用函數cvConvertScale() / cv::Mat::convertTo()將其轉換為這種像素格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM