0

私はOpenCVの初心者です。を使用して OpenCV イメージを作成し、cvCreateImageそれにいくつかの操作を適用します。今、基になるメモリが連続している一連の OpenCV イメージを作成したいと考えています。これは、後で並列または CUDA 手法を使用して一連の画像フレームとしてそのメモリを処理するのに役立ちます。

メモリ内で連続する特定の数の OpenCV イメージを作成するにはどうすればよいですか?

4

2 に答える 2

3

自分でデータを割り当てることができます:

const int W = 640;
const int H = 480;
const int C = 1;  // number of channels (1 for CV_8U)
const int N = 10; // number of images
unsigned char buffer[W*H*C*N];

cv::Mat im0(H, W, CV_8U, buffer);
cv::Mat im1(H, W, CV_8U, buffer + W*H*C);
cv::Mat im2(H, W, CV_8U, buffer + W*H*C*2);

私は C++ API に慣れているので使用しましたが、cvCreateImage関数を使用した C API にも同様の動作が存在するはずです。

于 2013-09-19T10:16:15.577 に答える
1

cv::Mat を使用してストレージを管理できます。その後、ストレージを削除することを忘れないでください。3 チャンネルの画像を想定:

const int W = 640; const int H = 480; const int C = 1;
const int N = 10; // number of images
cv::Mat buffer (N, W * H, CV_8UC3);

cv::Mat im0(H, W, CV_8UC3, buffer.ptr<uchar>(0));
cv::Mat im1(H, W, CV_8UC3, buffer.ptr<uchar>(1));
cv::Mat im2(H, W, CV_8UC3, buffer.ptr<uchar>(2));
于 2014-07-01T12:49:24.937 に答える