OpenCV 2.4.3 и видео-вход в Mat

Я пытаюсь захватить видео в виде Mat с двух или более MSFT LifeCam HD-3000 с использованием библиотеки videoInput, OpenCV 2.4.3 и VS2010 Express.

Я следовал примеру на: Самый эффективный способ захвата и отправки изображений с веб-камеры в сети, и он отлично работал.

Теперь я хочу заменить тип IplImage на тип C++ Mat. Я попытался следовать примеру в: opencv создать мат из данных камеры

Это дало мне следующее:

    VI = new videoInput;
    int CurrentCam = 0;
    VI->setupDevice(CurrentCam,WIDTH,HEIGHT);
    int width = VI->getWidth(CurrentCam);
    int height = VI->getHeight(CurrentCam);
    unsigned char* yourBuffer = new unsigned char[VI->getSize(CurrentCam)];
    cvNamedWindow("test",1);
    while(1)
    {
       VI->getPixels(CurrentCam, yourBuffer, false, true);
       cv::Mat image(width, height, CV_8UC3, yourBuffer, Mat::AUTO_STEP);
       imshow("test", image); 
       if(cvWaitKey(15)==27) break;
    }

Выходными данными является выровненное изображение (т. Е. Похоже, что первая строка правильная, но вторая строка кажется отключенной, третья правильная, четвертая отключена и т. Д.). Это говорит о том, что либо часть шага неверна, либо есть некоторая разница между типом IplImage и типом Mat, который я не получаю. Я попытался посмотреть / изменить все параметры, но ничего не могу найти.

Надеемся, что ответ поможет тем, кто сталкивается с довольно распространенной проблемой при загрузке изображения из библиотеки videoInput в тип Mat.

Заранее спасибо!

1 ответ

Решение

Пытаться

cv::Mat image(height, width, CV_8UC3, yourBuffer, Mat::AUTO_STEP);
Другие вопросы по тегам