2012-08-24 16 views
14

OpenCV Matオブジェクトに直接変換したい.jpgファイルを表すバイト配列があります。私は@bob言及としてC++でバイトarryをOpenCVイメージに変換する

byte* data; // Represents a JPG that I don't want to disk and then read. 
// What goes here to end up with the following line? 
cv::Mat* image_representing_the_data; 
+0

から、imread()と同じことを行います

Mat img = imdecode(data); 

がJPGの圧縮されたバイトストリームであります画像ファイル? –

+0

cv :: Mat image_representing_the_data(dataSize、1、CV_8U、data)を試しましたか? (そしてイメージを再形成する)? – Sassa

答えて

11

のようなものを持っている

、これはマットのコンストラクタを使用して行うことができます。

byte *data; 
cv::Mat imageWithData = cv::Mat(sizeOfData, 1, CV_8U, data).clone(); 

あなたはこの行列を作成した後、画像内の行数とreshape関数を呼び出します。

Mat reshapedImage = imageWithData.reshape(0, numberOfRows); 
18

前述の方法は、PIXELデータの場合は正常に機能します。

代わりに、jpgファイル全体がメモリ、ヘッダー、圧縮などにある場合、動作しません。あなたがしたいような場合で

:だからあなたはデータを意味するだけでメモリからではなく、ファイル名

関連する問題