Чтение кадра PSEye Camera

0

Я использую API CL Eye Multicam C++ для получения кадров из камеры PSEye, и я нашел что-то интересное. Надеюсь, кто-то может объяснить мне такое поведение.

Следуя этому примеру, если я использую обычный код (вокруг строки 108):

while(_running)
{
    cvGetImageRawData(pCapImage, &pCapBuffer);
    CLEyeCameraGetFrame(_cam, pCapBuffer);
    cvShowImage(_windowName, pCapImage);
}

PCapBuffer обновляется, НО, если я просто делаю:

while(_running)
{    
    CLEyeCameraGetFrame(_cam, pCapBuffer);     
}

pCapBuffer remais NULL ! Поэтому для того, что я вижу, CLEyeCameraGetFrame() просто обновляет pCapBuffer когда кто-то "потребляет" его... чего я не понимаю, как CLEyeCameraGetFrame() знает, что буфер был прочитан? Я ожидал, что pCapBuffer будет обновляться каждый раз, когда я CLEyeCameraGetFrame().... это регулярное поведение в кадре камеры читается?

Также, если кто-то может указать мне, как сделать QImage из этого pCapBuffer это будет очень полезно!

Теги:
camera

1 ответ

0

Я, наконец, понял, что происходит... cvGetImageRawData() копирует изображение pCapImage необработанные данные pCapBuffer и, таким образом, дает ему адрес, что делает его указать на представление внутренних данных класса изображений. Поэтому каждый раз, когда CLEyeCameraGetFrame() называется изменением данных внутри pCapBuffer, это те же данные внутри pCapImage. Разработчик этого кода просто использовал функции OpenCV для инициализации буфера с нужным объемом пространства и использовал его для получения изображения кадра.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню