VideoCapture выбирает тайм-аут с OpenCV 3.0.0-rc1

Я использую OpenCV 3.0.0-rc1 в Ubuntu 14.04 LTS Guest в VirtualBox с хостом Windows 8. У меня есть предельно простая программа для чтения кадров с веб-камеры (Logitech C170) (из документации OpenCV). К сожалению, это не работает (я пробовал 3 разные веб-камеры). Выдает ошибку "выберите таймаут" каждые пару секунд и читает кадр, но кадр черный. Есть идеи?

Код следующий:

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

// Main
int main(int argc, char **argv) {

/* webcam setup */
VideoCapture stream;
stream.open(0);
// check if video device has been initialized
if (!stream.isOpened()) { 
        fprintf(stderr, "Could not open Webcam device");  
        return -1;
    }
    int image_width = 640; // image resolution
    int image_height = 480;
    Mat colorImage,currentImage;
    bool loop = true;
    /* infinite loop for video stream */
    while (loop) {
        loop = stream.read(colorImage);  // read webcam stream
        cvtColor(colorImage, currentImage, CV_BGR2GRAY); // color to gray for current image   
        imshow("Matches", currentImage);
        if(waitKey(30) >= 0) break;
        // end stream while-loop
    }
    return 0;
}

person takahashi    schedule 10.03.2016    source источник


Ответы (1)


Я обнаружил проблему: при использовании веб-камеры обязательно подключайте ее к виртуальной машине, используя Devices->Webcams, а НЕ Devices->USB. Несмотря на то, что веб-камера определяется как video0 при подключении через Devices->USB, по некоторым причинам она не работает.

person takahashi    schedule 10.03.2016