Чтение видеокадра с OpenCV по указанному указателю (C ++) - PullRequest
0 голосов
/ 09 мая 2018

Есть ли способ прочитать видеокадр с помощью видеозахвата и указать, куда он должен идти в памяти? Скажем, если у меня есть указатель char * p и я уже выделил правильный объем памяти для кадра, могу ли я прочитать в кадре адрес p?

1 Ответ

0 голосов
/ 09 мая 2018

cv::Mat предназначен для автоматического управления памятью изображений, но также может использоваться с внешними буферами. Для этого передайте указатель на внешний буфер конструктору Mat .

Убедитесь, что размер буфера, размер и тип циновки (каналы, глубина и т. Д.) Соответствуют выводу, выходящему из VideoCapture.

Пример:

unsigned char *data; // Points to buffer of appropriate size.
cv::VideoCapture cap; // A valid capture

// This only allocates the Mat header with a reference to "data"
cv::Mat frame {
    rows,
    cols,
    CV_8UC3, // image type, here 3-channel, 8 bits per channel, unsigned
    data
};
cap >> frame;  // Image data stored into buffer at "data"
...