Проблема обработки нескольких камер OpenCV

1) Я получаю эти ошибки при работе с двумя камерами Logitech C310 с OpenCV (обновленный Kubuntu Linux)

VIDIOC_STREAMON: на устройстве не осталось места

Весь журнал ошибок, как показано ниже

**IDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument**
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
**libv4l2: error turning on stream: No space left on device**
**VIDIOC_STREAMON: No space left on device**
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /home/rjdp/Computer_Vision/0_Installers/OpenCV-2.4.2/modules/core/src/array.cpp, line 2482
terminate called after throwing an instance of 'cv::Exception'
what():  /home/rjdp/Computer_Vision/0_Installers/OpenCV-2.4.2/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat

2) Это происходит только при работе с двумя камерами, даже по умолчанию с низким разрешением 640×480. Я все еще пытался снизить разрешение в коде до 320×240, которое также не работало.

3) Я искал много других постов здесь & на других сайтах. Который сказал мне, что не хватает пропускной способности USB-камеры. Поэтому я попытался подключить одну камеру перед USB & один на задней стороне, который также не удалось 🙁

Мой вопрос:

Возможно ли решить эту проблему с пропускной способностью / памятью & запустить два или
больше камер вместе на opencv 2.4.2 ??
OpenCV использует FFmpeg для обработки ввода / вывода, так что я могу сказать моей камере оборудования с помощью некоторой команды ffmpeg, чтобы принять входной поток с сжатый режим MPEG вместо пропускной способности, потребляющей нормальный режим.

Код ниже:

#include "opencv2/opencv.hpp"#include <stdio.h>
using namespace cv;

int main(int, char**)
{
VideoCapture cap01(0); // open the default camera
cap01.set(CV_CAP_PROP_FRAME_WIDTH,320);
cap01.set(CV_CAP_PROP_FRAME_HEIGHT,240);
//sleep(1);
if(!cap01.isOpened())  // check if we succeeded
return -1;
namedWindow("Camera01",1);

VideoCapture cap02(1); // open the default camera
cap02.set(CV_CAP_PROP_FRAME_WIDTH,320);
cap02.set(CV_CAP_PROP_FRAME_HEIGHT,240);
if(!cap02.isOpened())  // check if we succeeded
return -1;
namedWindow("Camera02",1);

for(;;)
{
Mat frame, frame_1;
//Mat frame02;
cap02 >> frame;
imshow("Camera01", frame);
if(waitKey(30) >= 0) break;
Mat frame_1;
cap02 >> frame_1;
imshow("Camera02", frame_1);
if(waitKey(30) >= 0) break;
}

return 0;
}

1

Решение

Использование карты расширения usb PCI решило ту же проблему для меня, поскольку веб-камера загружает все доступные полосы пропускания на шине usb. Использование карты расширения pci USB предоставляет вам вторую шину USB, к которой вы можете подключить вторую веб-камеру.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]