Форум программистов, компьютерный форум CyberForum.ru

Захват видео с камеры. OpenCV - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.70
broDiaga_cpp
 Аватар для broDiaga_cpp
19 / 9 / 1
Регистрация: 20.02.2010
Сообщений: 180
21.09.2013, 19:36     Захват видео с камеры. OpenCV #1
Добрый вечер, форумчане.
Возникла проблема с захватом видео. Применяю библиотеку openCV 2.1. С одной камеры (USB) захват видео проходит как нужно. Решил поставить Logitech c310, и что-то не фурычит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
 
int main()
{
    CvCapture* capture = cvCreateCameraCapture(200); //cvCaptureFromCAM( 0 );
        assert( capture );
 
    cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640); 
        cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480); 
 
        // узнаем ширину и высоту кадра
        double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
        double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
        printf("[i] %.0f x %.0f\n", width, height );
 
        IplImage* frame=0;
 
        cvNamedWindow("capture", CV_WINDOW_AUTOSIZE);
 
        printf("[i] press Enter for capture image and Esc for quit!\n\n");
 
        int counter=0;
        char filename[512];
 
        while(true){
                frame = cvQueryFrame( capture );
                cvShowImage("capture", frame);
                char c = cvWaitKey(33);
                if (c == 27) { // нажата ESC
                        break;
                }
        }
        cvReleaseCapture( &capture );
        cvDestroyWindow("capture");
        return 0;
}
При запуске программы выводится стандартное окошко Windows, в котором предлагается выбрать видеокамеру. Выбираю нужную камеру, причём assert( capture ); проходит без ошибок. Но в консоль выводится, что изображение размером 0 x 0. А новое окно, куда должен быть выведен кадр - черное.
Кто-нибудь сталкивался с подобной проблемой? С другой камерой всё хорошо.
Камера рабочая, проверял в VirtualDub. Отображение на экран, а так же запись в файл происходит корректно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 19:36     Захват видео с камеры. OpenCV
Посмотрите здесь:

Захват функции ? C++
C++ получение данных с камеры без OpenCV C++
C++ DirectShow: захват видео с веб-камеры, воспроизведение
Не работает захват видео C++
C++ Захват видео с экрана во время игры - (DirectShow)
Захват аудио и видео потоков C++
OpenCV, две камеры (стереозрение) C++
Какими средствами С++ делать захват не с веб, а с реальной камеры? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 20:27     Захват видео с камеры. OpenCV #2
Может быть такое, что камера не поддерживает разрешение которое ты ей навязываешь (640x480) ?

Добавлено через 4 минуты
Если к ПК в данный момент подключена одна камера, то лучше использовать CV_CAP_ANY в качестве параметра cvCreateCameraCapture.
broDiaga_cpp
 Аватар для broDiaga_cpp
19 / 9 / 1
Регистрация: 20.02.2010
Сообщений: 180
22.09.2013, 12:14  [ТС]     Захват видео с камеры. OpenCV #3
Цитата Сообщение от broDiaga_cpp Посмотреть сообщение
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640);
* * * * cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);
Убирал эти команды - та же петрушка.

Цитата Сообщение от castaway Посмотреть сообщение
Если к ПК в данный момент подключена одна камера, то лучше использовать CV_CAP_ANY в качестве параметра cvCreateCameraCapture.
Иначе никак. Работаю на ноутбуке, у которого есть встроенная камера. По умолчанию выбирается она.
Пробовал в диспетчере устройств отключать и использовать CV_CAP_ANY, но всё-равно выбирается что-то, но не USB'шная камера, которая нужна.

Добавлено через 15 часов 22 минуты
Проблема решена. Скорее всего драйвер как-то криво изначально встал, хотя, повторюсь, в VirtualDub всё работало.
Спасибо.
Yandex
Объявления
22.09.2013, 12:14     Захват видео с камеры. OpenCV
Ответ Создать тему
Опции темы

Текущее время: 04:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru