我是OpenCV新手。cvCreateImage
我使用并应用了一些操作来创建一个 OpenCV 图像。现在,我想创建一系列底层内存为contiguous的 OpenCV 图像。这有助于稍后使用并行或 CUDA 技术将该内存作为一系列图像帧进行处理。
如何创建一定数量的在内存中连续的 OpenCV 图像?
我是OpenCV新手。cvCreateImage
我使用并应用了一些操作来创建一个 OpenCV 图像。现在,我想创建一系列底层内存为contiguous的 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,因为我更习惯它,但是 C api 中必须存在与该cvCreateImage
函数类似的行为。
您可以使用 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));