簡體   English   中英

C++ openCV墊初始化

[英]C++ openCV mat initialization

我對 OpenCV 完全陌生,我正在嘗試從兩種不同類型的數據初始化兩個cv::Mat矩陣。 一個是簡單的單通道uint16_t灰度值數組,第二個應該保存uint8_t值數組中的 RGB 值,該數組保存 RGB 565(每個像素占用 2 個uint8_t ,所以它基本上是uint16_t數組)。 我想要一個單香奈爾矩陣和一個 3 香奈爾矩陣(有時可能會轉換為一個香奈兒……但我還沒有完全做到。

function(uint16_t *oneChanell, int oneChanellWidth, int oneChanellHeight, uint8_t *rgb, int rgbWidth, int rgbHeight){
...
    cv::Mat M1 = cv::Mat(oneChanellHeight, oneChanellWidth, CV_16UC1, oneChanell);
    cv::Mat M2 = cv::Mat(rgbHeight, rgbWidth, CV_16UC3, rgb);
...
}

現在,我知道第二次初始化是錯誤的。 所以這是我的問題的一部分,如何最好地將 rgb565values 數組轉換為cv::Mat 然而,在我的理解中,第一次初始化應該可以工作。 當使用cv::imwrite()進行測試時,第一個只產生正確大小的空白白色圖片,后三個相同(正確)圖片的部分重疊剪影,但不是 RGB。 任何意見,將不勝感激。

使用cv::cvtColor將 mat M2 從 RGB565 轉換為 RGB 格式。

...

cv::Mat M2 = cv::Mat(rgbHeight, rgbWidth, CV_16UC1, rgb);
// M2.depth()    = 2 # CV_16U
// M2.channels() = 1 # single channel with each element having 16 bit



//convert mat format from bgr565 to rgb
cv::Mat M2_rgb;
cv::cvtColor(M2, M2_rgb, COLOR_BGR5652RGB);

...

暫無
暫無

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

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