我有一個問題,將圖像數據從圖像採集卡中解析爲OpenCV Mat格式。我可以從我的EDT圖像採集卡中獲取圖像數據作爲無符號字符指針並將其傳遞給新創建的Mat,但我在這個過程中丟失了寶貴的數據,我不知道如何解決它。將unsigned char *圖像轉換爲OpenCV的問題Mat
我的相機是一個紅外相機,可輸出12位320x256拜耳圖像。我相當確信我使用EDT的API是正確的。使用EDT的軟件「pdvshow」,我可以按預期查看圖像數據,但是當我將來自EDT API的返回幀轉換爲OpenCV Mat並顯示它時,我會丟失大量數據。當Mat設置爲CV16UC1時,框架接近黑色,當Mat設置爲CV8UC1時,該框架顯示大部分數據,但顯得非常粗糙,有些斑點完全被吹掉。我知道圖像採集卡以兩個字節存儲每個12位像素,並且數據是MSB對齊的。 GetStride返回0
unsigned char *pdvImage;
pdvImage = pdv_image(pdv_p);
cv::Mat freshFrame;
freshFrame = cv::Mat(GetHeight(), GetWidth(), CV_16UC1, pdvImage, GetStride()); //was CV_16UC1 but 8UC1 shows more data
return freshFrame.clone();