linux — C ++ / openCV: невозможно открыть камеру

Я пытаюсь захватить отдельные кадры с USB-камеры с openCV на Beaglebone Black.

Сначала моя установка:
У меня есть виртуальная машина Debian 7 с Qt для кросс-компиляции.
Я использую Qt 5.2
На Beaglebone я также запускаю Debian 7.
Я собрал openCV 2.4.1 и 2.4.9 в ВМ и на ВВВ (http://aplacetogeek.wordpress.com/qt-opencv-v4l-cross-compiling-raspberry-pi-beagle-bone/)

Если я скомпилирую в ВМ, я могу делать снимки. Если я скомпилирую для BBB, он не сможет открыть камеру-устройство.

Вот метод (только для тестирования, я знаю, что это ужасно ^^):

cv::VideoCapture * cam0 = new cv::VideoCapture(0);

if (cam0->isOpened())
{
cam0->set(CV_CAP_PROP_FRAME_WIDTH, 1280);
cam0->set(CV_CAP_PROP_FRAME_HEIGHT, 720);
cam0->set(CV_CAP_PROP_FOURCC, CV_FOURCC('M','J','P','G'));
cam0->set(CV_CAP_PROP_FPS, 5);
}
else
{
qDebug()<<"Could not open cam0";
delete cam0;
cam0 = NULL;
}

cv::VideoCapture * cam1 = new cv::VideoCapture(1);
if (cam1->isOpened())
{
cam1->set(CV_CAP_PROP_FRAME_WIDTH, 1280);
cam1->set(CV_CAP_PROP_FRAME_HEIGHT, 720);
cam1->set(CV_CAP_PROP_FOURCC, CV_FOURCC('M','J','P','G'));
cam1->set(CV_CAP_PROP_FPS, 5);
}
else
{
qDebug()<<"Could not open cam1";
delete cam1;
cam1 = NULL;
}

qDebug()<<"Here I am! :)";

if ((cam0 != NULL) || (cam1 != NULL))
{
cv::Mat frame;
for (int i=0;i<10;i++)
{
QString num;
num = QString::number(i);

if (cam0 != NULL)
{
cam0->grab();
if (cam0->retrieve(frame))
{
QString vm0("/home/administrator/Bilder/0captured_yay"+num+".jpg");
QString bbb0("/home/debian/pics/0captured_yay"+num+".jpg");

qDebug()<<"Write "<<bbb0;
cv::imwrite(vm0.toStdString(), frame);
cv::imwrite(bbb0.toStdString(), frame);
}
else
qDebug()<<"cam0: Could not grab frame "<<i+1;
}

if (cam1 != NULL)
{
cam1->grab();
if (cam1->retrieve(frame))
{
QString vm1("/home/administrator/Bilder/1captured_yay"+num+".jpg");
QString bbb1("/home/debian/pics/1captured_yay"+num+".jpg");

qDebug()<<"Write "<<bbb1;
cv::imwrite(vm1.toStdString(), frame);
cv::imwrite(bbb1.toStdString(), frame);
}
else
qDebug()<<"cam1: Could not grab frame "<<i+1;
}

this->thread()->sleep(1);
}
}

В ВМ работает нормально и пишет картинки. Но на BBB я просто получаю вывод:

Could not open cam0
Could not open cam1
Here I am! :)
Here I go... :(

0

Решение

Задача ещё не решена.

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


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