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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.70
broDiaga_cpp
22 / 12 / 1
Регистрация: 20.02.2010
Сообщений: 180
#1

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

21.09.2013, 19:36. Просмотров 5228. Ответов 2
Метки нет (Все метки)

Добрый вечер, форумчане.
Возникла проблема с захватом видео. Применяю библиотеку 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. Отображение на экран, а так же запись в файл происходит корректно.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 19:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Захват видео с камеры. OpenCV (C++):

DirectShow: захват видео с веб-камеры, воспроизведение - C++
Посоветуйте для начала понятный мануал, что-бы можно было с нуля разобраться (желательно без воды). У меня стоит win7, DirectShow беру...

Какими средствами С++ делать захват не с веб, а с реальной камеры? - C++
Каким образом можно осуществить захват не с веб камеры а скажем с цифровой камеры которая стоит в комнате ?? Для этого нужно писать клиент...

OpenCV, две камеры (стереозрение) - C++
Доброго суток времени. Надеюсь раздел выбрал верный. Перелопатил много страниц, большинство тем очень старые и ответов полных нету....

C++ получение данных с камеры без OpenCV - C++
Всем привет. Возник такой вопрос: как можно получить данные с вебкамеры без использования OpenCV. Как к ней коннектиться, в каком формате...

Не работает захват видео - C++
выдаёт вот такие ошибки: Первый этап обработки исключения в &quot;0x7c80be74 (kernel32.dll)&quot; в &quot;cam.exe&quot;: 0xC0000005: Нарушение прав доступа...

Захват видео с экрана - C++
Привет! С помощью чего можно захватить видео с экрана, желательно кроссово и на Qt, если нет, тогда чисто под винду ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
21.09.2013, 20:27 #2
Может быть такое, что камера не поддерживает разрешение которое ты ей навязываешь (640x480) ?

Добавлено через 4 минуты
Если к ПК в данный момент подключена одна камера, то лучше использовать CV_CAP_ANY в качестве параметра cvCreateCameraCapture.
0
broDiaga_cpp
22 / 12 / 1
Регистрация: 20.02.2010
Сообщений: 180
22.09.2013, 12:14  [ТС] #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 всё работало.
Спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 12:14
Привет! Вот еще темы с ответами:

Захват аудио и видео потоков - C++
Стоит задачка захватить аудио дорожку и видео-поток с окна и все это смикшировать в фильм. Грубо говоря фрапс со звуком. Видео и аудио уже...

Захват видео с экрана во время игры - (DirectShow) - C++
Проблема в том, что все фильтры, которые я пробовал не снимают видео с экрана, когда игра открыта во весь экран. Если вы знаете фильтр...

OpenCV. Не воспроизводится видео .avi - C++
Почему не воспроизводится видео? Выкидывает из цикла в первом условии &quot;if( !frame )&quot;, т.е. получается, что кадра вообще нет. Почему? Пути...

Получение потокового видео в градациях серого. C++, OpenCv - C++
Как получать потоковое изображение в градациях серого? Небольшая программа по захвату потокового видео имеется #include...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru