Как подключить захват веб-камеры? - PullRequest
2 голосов
/ 26 июня 2009

Я работаю над программным обеспечением, в текущей версии которого есть изготовленный на заказ драйвер устройства для веб-камеры, и мы используем этот драйвер с нашим программным обеспечением, которое изменяет захваченное изображение перед его отображением, очень похоже на YouCam.

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

Проблема в том, что всегда установлено "2" веб-камеры, реальная и наш пользовательский драйвер.

Я заметил, что YouCam делает то, что нам нужно, то есть подключать какой-либо метод к любой установленной веб-камере, который будет обрабатывать каждый кадр перед его отображением.

Кто-нибудь знает, как это сделать?

Мы используем VC ++.

Спасибо

Ответы [ 4 ]

2 голосов
/ 24 июля 2009

Как сказал bkritzer, OpenCV легко делает то, что вы хотите.

IplImage  *image = 0;   // OpenCV type
CvCapture *capture = 0; // OpenCV type

// Create capture
capture = cvCaptureFromCAM (0);
assert (capture, "Can't connect webcam");

// Capture images
while (stilCapturing)
{
    // Grab image
    cvGrabFrame (capture);
    // Retrieve image
    image = cvRetrieveFrame (capture);
    // You can configure refresh time
    if (image) cvWaitKey (refreshTime);
    // Process your image here
    //...
}

Вы можете инкапсулировать эти вызовы OpenCV в класс C ++ и выделить для него отдельный поток - это будет ваш драйвер.

1 голос
/ 17 июля 2009

Проверьте библиотеки OpenCV . Он имеет множество учебных примеров и библиотек, которые делают именно то, что вы просите. Это немного сложно установить, но я заставил его работать раньше.

1 голос
/ 15 июля 2009

Я думаю, что YouCam использует DirectShow фильтр преобразования . Это то, что вам нужно?

0 голосов
/ 04 января 2010

Ну, я думаю, что в этом вопросе есть два ключевых понятия, которые были неправильно поняты:

1) Как подключить захват веб-камеры
2) ... любое приложение, которое использует веб-камеру ...

Если я правильно понял, OpenCV полезен для написания собственного полного приложения, что означает, что оно откроет камеру и обработает изображения. Так что это не будет удовлетворять пункту 2) , который, как я понимаю, относится к другому приложению (не вашему!), Открывающему камеру, и вашему приложению, обрабатывающему изображения.

Пункт 1), кажется, подтверждает это, потому что «крючок» - это слово, обычно означающее перехват какого-либо другого процесса, который не является частью вашего собственного приложения. Поэтому я сомневаюсь, если на этот вопрос ответили или нет. Я тоже заинтересован в этом.

...