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);