IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

OpenCV Webcam illisible


Sujet :

OpenCV

  1. #1
    Membre régulier Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Points : 88
    Points
    88
    Par défaut OpenCV Webcam illisible
    Bonjour,

    Je suis de base programmeur java/j2e et j'ai un besoin perso pour du traitement d'image, je pense que les apis mises à dispositions par opencv en c++ me conviennent parfaitement. Cependant je rame à mort pour pouvoir commencer à bosser sur des exemples simples qui compilent et se lancent .

    Je suis sous Windows, j'ai télécharger qt 5.1 32bits avec mingw 4.8 et opencv 2.4.6.

    Mon problème est simple je réalise une vidéo avec ma cam, je l'enregistre j'essaye de l'ouvrir avec openCV (code ci-dessous).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <iostream>
     
    int main()
    {
        cv::VideoCapture capture("C:/Temp/OpenCV/testrate.avi");
        //cv::VideoCapture capture(0);
     
        //check if video successfully open
        if (!capture.isOpened()) {
            return 1;
        }
     
        //get frame rate
        double rate = capture.get(CV_CAP_PROP_FPS);
     
        bool stop(false);
        cv::Mat frame;
        cv::namedWindow("Extracted Frame");
     
        int delay = 1000/rate; //delay between each frame => video frame rate
     
        while (!stop) {
            if (!capture.read(frame)) {
                break;
            }
            cv::imshow("Extracted Frame", frame);
     
            if (cv::waitKey(delay) >= 0) {
                stop = true;
            }
        }
     
        //close video
        capture.release();
    }
    Le problème est que je plante lorsque j'essaye de lire les frames (capture.read(frame) {). Je précise que j'arrive à lire d'autres videos (j'ai testé avec celle présente dans Windows : C:\Users\Public\Videos\Sample Videos).

    J'ai pensé à un problème de codec (bien que j'arrive à lire ma video avec WMP), j'ai donc installer K-Lite Code Pack mais le problème persiste.

    J'ai du mal à comprendre d'ou vient le soucis, avez-vous une idée?

  2. #2
    Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    T'as essayé avec des fonctions C, remplacer par exemple la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cv::VideoCapture capture(0);
    par ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CvCapture * capture = 0;
    capture = cvCreateCameraCapture(CV_CAP_ANY);

  3. #3
    Membre régulier Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Points : 88
    Points
    88
    Par défaut
    L'utilisation des fonctions C ne changent rien :/.

    Le bug que j'obtiens arrive lorsque que j'essaye de lire une video qui a été précédemment faite avec ma webcam

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cv::VideoCapture capture("C:/Temp/OpenCV/testrate.avi");
    Lorsque que j'essaye de lire directement le flux de ma webcam :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cv::VideoCapture capture(0);
    Cela fonctionne normalement SAUF lorsque je suis en debug , je plante alors sur la ligne capture(0) avec l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (avant l'erreur)
    can't find linker symbol for virtual table for `cv::VideoCapture' value
    can't find linker symbol for virtual table for `cv::VideoCapture' value
     
    -----
    (l'erreur)
    Le fichier spécifié est introuvable.
    Le fichier spécifié est introuvable.
    (Internal error: pc 0x23f in read in psymtab, but not in symtab.)
    (Internal error: pc 0x23f in read in psymtab, but not in symtab.)
    (Internal error: pc 0x23f in read in psymtab, but not in symtab.)
    J'ai l'impression que je ne suis pas prêt de le faire marcher

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/01/2013, 14h22
  2. Réponses: 1
    Dernier message: 02/04/2012, 13h23
  3. SDL / OPENCV pour gestion webcam
    Par sweet live dans le forum SDL
    Réponses: 1
    Dernier message: 27/01/2012, 00h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo