フレーム グラバーからの画像データを OpenCV Mat 形式に解析する際に問題があります。EDT フレーム グラバーから unsigned char ポインターとして画像データを取得し、新しく作成した Mat に渡すことができますが、その過程で貴重なデータが失われ、修正方法がわかりません。
私のカメラは、12 ビット 320x256 ベイヤー画像を出力する赤外線カメラです。私は、EDT の API の使用が正しいと確信しています。EDT のソフトウェア「pdvshow」を使用すると、イメージ データは期待どおりに表示できますが、返されたフレームを EDT の API から OpenCV Mat に変換して表示すると、かなりの量のデータが失われます。マットを CV16UC1 に設定すると、フレームは黒に近くなり、マットを CV8UC1 に設定すると、フレームにほとんどのデータが表示されますが、非常に粗く見え、一部のスポットが完全に吹き飛ばされます。フレーム グラバーが各 12 ビット ピクセルを 2 バイトで格納し、データが 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();