私はOpenCVの初心者です。を使用して OpenCV イメージを作成し、cvCreateImage
それにいくつかの操作を適用します。今、基になるメモリが連続している一連の OpenCV イメージを作成したいと考えています。これは、後で並列または CUDA 手法を使用して一連の画像フレームとしてそのメモリを処理するのに役立ちます。
メモリ内で連続する特定の数の OpenCV イメージを作成するにはどうすればよいですか?
私はOpenCVの初心者です。を使用して OpenCV イメージを作成し、cvCreateImage
それにいくつかの操作を適用します。今、基になるメモリが連続している一連の OpenCV イメージを作成したいと考えています。これは、後で並列または CUDA 手法を使用して一連の画像フレームとしてそのメモリを処理するのに役立ちます。
メモリ内で連続する特定の数の OpenCV イメージを作成するにはどうすればよいですか?
自分でデータを割り当てることができます:
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 にも同様の動作が存在するはずです。
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));