char型のポインタに入っているデータをOpenCVのcv:Matの変数に反映させる方法について

投稿者: Anonymous

cv::matクラスの変数の入力データとして、char型のポインタに入っている画像データを
MAT型のデータとして反映したいのですが、どの様にすればよいのでしょうか?
C言語的に書くとやりたいことのイメージとしては以下のような感じです。

// やりたいことのイメージ
cv::Mat img;
char *data;
data = (char *)malloc(12345 * sizeof(char));
memcpy(img, data, 12345);

現状、データを一度ファイルに書き出して、
img = imread(ファイルパス)としているのでこれをimdecode()など(これに限らず)を
使っていちいちファイルに書き出さない様に改善したいと考えています。
ご教授お願い致します。

解決

char型のポインタに入っている画像データをMAT型のデータとして反映したい
JPEG形式のフォーマットになります。

JPEGデータは圧縮された画像ですから、デコードを行わないとOpenCVで扱えるデジタル画像になりません。

char *data = /* JPEGデータ */;
size_t len = /* JPEGデータのサイズ[byte] */;

std::vector<uchar> jpeg(data, data + len);
cv::Mat img = cv::imdecode(jpeg);
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *