[c++] Вебкамера

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by t3zo, 17 Jun 2012.

  1. t3zo

    t3zo Member

    Joined:
    18 Feb 2010
    Messages:
    51
    Likes Received:
    14
    Reputations:
    5
    Здраствуйте, уважаемые юзеры!
    Помогите понять через что и как пользоваться вебкамерой!?

    Задача стоит следующая снять картинку и сохранить в файл!(для фулл линейки виндовс)
    Опыт:
    vfw - слишком старый, у меня тупо зеленая\черная картинка :(
    directshow - слишком муторный, не понял как сделать обычный снимок
    WIA - хоть и есть в SDK на msdn методы и т.д. Но не могу понять как сделать просто снимок, без всяких излишеств.... нашел правда
    Code:
    http://translate.google.ru/translate?hl=ru&sl=en&u=http://msdn.microsoft.com/en-us/library/windows/desktop/ms629848(v%3Dvs.85).aspx&sa=X&ei=k_rcT8aYNc66-AaCwtCpCg&ved=0CFEQ7gEwAA&prev=/search%3Fq%3Dhttp://msdn.microsoft.com/en-us/library/ms629848(VS.85).aspx%26hl%3Dru%26newwindow%3D1%26client%3Dopera%26rls%3Dru%26channel%3Dsuggest%26biw%3D1887%26bih%3D840%26prmd%3Dimvns
    Но смысла не знаю зачем мне это "делать снимок с потока видео", тем более не поддерживается в висте и 7
     
  2. Hac|{||not

    Hac|{||not New Member

    Joined:
    2 Nov 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
  3. t3zo

    t3zo Member

    Joined:
    18 Feb 2010
    Messages:
    51
    Likes Received:
    14
    Reputations:
    5
    Пофигу, выдает черный экран...


    Поставил версия 1.0, но высвечивает окно консольное и закрывает программу.. Вообще не понимаю
     
    #3 t3zo, 18 Jun 2012
    Last edited: 19 Jun 2012
  4. warkk

    warkk Member

    Joined:
    20 Feb 2009
    Messages:
    139
    Likes Received:
    23
    Reputations:
    0
    Поставь версию поновее. Первая картинка может быть черной, попробуй получить вторую, третью. Или сделай чтобы картинка сохранялась по нажатию кнопки

    Code:
    
    CvCapture* capture = cvCreateCameraCapture(0);
    IplImage* img;
    
    while(1)
    {
           img = cvQueryImage(capture);
           cvShowImage("Image", img);
           char c = cvWaitKey(10);
           if(c == '13') { cvSaveImage("img.jpg", img); } // Enter
    }
    
    
    
     
  5. t3zo

    t3zo Member

    Joined:
    18 Feb 2010
    Messages:
    51
    Likes Received:
    14
    Reputations:
    5
    Поставил 2.1 не хочет.....
    через videoInput 1995


    Все выдает черный экран!!!!

    PHP:
        bool WebCameraShot(charszFileNameint Widthint Heightint vWindow)
        {
        
    videoInput VI;
        
    int numDevices VI.listDevices();
        
    int device10;
        
    VI.setupDevice(device1);
        
    int width VI.getWidth(device1);
        
    int height VI.getHeight(device1);
        
    IplImageimagecvCreateImage(cvSize(widthheight), 83);
        
    unsigned charyourBuffer = new unsigned char[VI.getSize(device1)];
        
    DWORD nwrite;
        
    cvNamedWindow("test");
        while(
    1)
        {
            
    VI.getPixels(device1yourBufferfalsefalse);
            
    image->imageData = (char*)yourBuffer;
            
    cvConvertImage(imageimageCV_CVTIMG_FLIP);
            
    cvShowImage("test"image);
            if(
    cvWaitKey(15)==27) break;
        }

        
    VI.stopDevice(device1);
        
    cvDestroyWindow("test");
            
    cvReleaseImage(&image);
            return 
    false
        }
     
  6. t3zo

    t3zo Member

    Joined:
    18 Feb 2010
    Messages:
    51
    Likes Received:
    14
    Reputations:
    5
    Подозреваю может что-то не то линкую? exe в samples у овенсв работают нормально!)))

    #include <cv.h>
    #include <highgui.h>

    #pragma comment(lib, "cv210.lib")
    #pragma comment(lib, "cxcore210.lib")
    #pragma comment(lib, "highgui210.lib")
    #pragma comment(lib, "cvaux210.lib")

    доп каталоги
    C:\OpenCV2.1/cxcore/include;C:\OpenCV2.1/cv/include;C:\OpenCV2.1/otherlibs/highgui
     
  7. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Пардон за глупый вопрос(однако и такое бывало) - у тебя камера имеется в наличии? И рабочая ли она?
     
    1 person likes this.
  8. t3zo

    t3zo Member

    Joined:
    18 Feb 2010
    Messages:
    51
    Likes Received:
    14
    Reputations:
    5
    две вебки - полностью рабочие...
     
  9. ADMIRAL[x]

    ADMIRAL[x] New Member

    Joined:
    25 Jun 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    t3zo
    Это потому что 2 вебки,1 отключи и всё будит работать :)
     
  10. t3zo

    t3zo Member

    Joined:
    18 Feb 2010
    Messages:
    51
    Likes Received:
    14
    Reputations:
    5
    Прошу отписывать людей тех, кто понимает\разбирается в сути....

    ToADMIRAL[x]
    cvCreateCameraCapture(0); - выбирает любую камеру...
    Хоть я от 1 - 10 включу роли не изменит
     
  11. totenkopf

    totenkopf Elder - Старейшина

    Joined:
    19 Jul 2010
    Messages:
    92
    Likes Received:
    64
    Reputations:
    19
    Re: "vfw - слишком старый, у меня тупо зеленая\черная картинка"

    Незнаю у меня прекрасно все работает на XP и на 7.

    Может у вас есть еще источники? Например TV тюнер.
    Могу дать реализацию на masm32.
     
    #11 totenkopf, 3 Jul 2012
    Last edited: 3 Jul 2012
  12. Hac|{||not

    Hac|{||not New Member

    Joined:
    2 Nov 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Мб просто эти вебкамеры уже используются другим приложением.
    Дело в том что если камера уже инициализирована , то ты к ней доступа не получишь , получишь черную картинку.