2016-05-09 107 views
0

我已經定義了一個數組char char [],並且需要將它轉換爲Opencv Mat。有沒有辦法?將字符數組轉換爲Opencv Mat

char buf[Max_size]; 
+0

如果你提供一些細節,會更好。爲什麼你想要這個?數據是什麼?你要使用輸出cv :: Mat –

+0

在我的服務器中,我從客戶端接收一個字節的圖像,並將它們存儲在char buf []的數組中。那麼我想發送buf []以由僅接受Mat變量的函數SURF處理。在您提供的解決方案中,是否必須將該行放入for循環中? – Electra

+0

不,你不需要把它放在一個循環中 –

回答

1

沒有什麼,叫: 「轉換char陣列cv::Mat」。 cv::Mat是表示內存中的圖像的容器。它可能擁有這些數據,可能不會。如果你想創建一個cv::Mat來表示一個圖像,它的位圖數據在一些char數組中,你可以使用下面的代碼。有趣的是,你知道圖像的行和列。

cv::Mat my_mat(rows,cols,CV_8UC1,&buf[0]); //in case of BGR image use CV_8UC3 

請記住,在這種情況下,cv::Mat並不擁有數據的所有權。您已手動刪除您的數據。但是,因爲它是一個堆棧數組,所以你不需要任何東西。

+0

對於其他人使用谷歌搜索;如果你的數據是'unsigned char *',你需要在重載解析的構造函數調用中強制轉換爲'void *'來查找正確的構造函數。 – oarfish