2012-03-30 436 views
0

我正在使用現有的代碼庫,它在進行處理之前可以從網絡攝像頭創建CVD images。我的目標是在處理其餘部分之前對增強現實執行此圖像上的標記檢測,並且我計劃使用ArUco來執行此操作。問題是ArUco需要一個OpenCV圖像來檢測標記。將CVD圖像轉換爲彩色OpenCV圖像

我想通過手動訪問CVD圖像的每個像素並將RGB值粘貼到新的OpenCV圖像中,從CVD圖像手動創建此OpenCV圖像。我對C++的工作不太熟悉,但肯定有更好的方法來做到這一點?

回答

2

我使用類似這樣的東西。 myImage的類型是一個(自定義)圖像類型,它將圖像的每個像素的3個字節存儲在連續的內存字節中,myImage.data()是指向該內存開始的指針。如果您的CVD圖像(我不熟悉)以類似的方式佈置,您也可以做同樣的事情。

cv::Mat image(rows, cols, CV_8UC3, myImage.data()); 
+1

是的,如果可能的話,您絕對要包裝圖像而不做副本。 – aardvarkk 2012-03-30 16:48:15

+0

這聽起來像我想要做的。根據CVD圖像文檔,我可以使用[]運算符取消每個像素的值,但我似乎無法找到如何獲取圖像的起始塊內存。從上面的代碼我猜行=圖像的寬度,cols =高度和CV_8UC3是圖像格式?是否有上述功能的文檔,所以我可以嘗試找出適用的圖像格式? – Jkh2 2012-03-30 17:09:08

+1

查看opencv.itseez.com的文檔,並找到第一個元素的地址與&image [0,0]。 CV_8UC3代表無符號,8位(uchar是標準圖像類型),3通道(RGB)。 – Sam 2012-03-30 18:51:15

相關問題