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 :

problème conversion de matrice


Sujet :

OpenCV

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut problème conversion de matrice
    bonjour,

    Je viens d'installer OpenCv avec Visual Studio C++ 2010

    J'essaie d'extraire une image d'une vidéo qui est en .avi , à l'aide de morceaux de code que j'ai trouvé sur internet.

    Voici le code et le message d'erreur que j'obtiens :

    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
    #include <tchar.h>
    #include <opencv2/core/core.hpp>        // Basic OpenCV structures (cv::Mat, Scalar)
    #include <opencv2/highgui/highgui.hpp>
    # include "cv.h"
    # include "highgui.h"
     
     
    using namespace cv;
     
    int _tmain(int argc, _TCHAR* argv[])
    {
            VideoCapture capture;
    		capture.open(0);
    		capture.open("C:\Documents and Settings\SY_R\red_car_video");
    		capture.isOpened();
     
    		Mat frame, edges;
    		namedWindow("edges",1);
     
    		capture>>frame;
     
    		cvShowImage("image:",frame);
     
            return 0;
    }

    1>c:\opencv8\build\include\opencv2\flann\logger.h(66): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(234)*: voir la déclaration de 'fopen'
    1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(16): warning C4129: 'D'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(16): warning C4129: 'S'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(24): error C2664: 'cvShowImage'*: impossible de convertir le paramètre 2 de 'cv::Mat' en 'const CvArr *'
    1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé


    Quelqu'un a t il une idée ?

    Cordialement,

    Ronan

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(16): warning C4129: 'D'*: caractère de séquence d'échappement non reconnu
    1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(16): warning C4129: 'S'*: caractère de séquence d'échappement non reconnu
    Tu as oublié d'échapper les caractères \ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    capture.open("C:\\Documents and Settings\\SY_R\\red_car_video");
    1>c:\documents and settings\sy_r\mes documents\visual studio 2010\projects\open_cv\open_cv\essai1.cpp(24): error C2664: 'cvShowImage'*: impossible de convertir le paramètre 2 de 'cv::Mat' en 'const CvArr *'
    1> Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    La fonction en C++ (et non C) est imshow() qui elle accepte parfaitement un cv::Mat du C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cvShowImageimshow("image:",frame);

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut
    Très bien merci , maintenant j'arrive à compiler !

    j'ai toujours un warning concernant la définition de fopen mais j'ai lu sur internet que c'était pas important ... :

    1>c:\opencv8\build\include\opencv2\flann\logger.h(66): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(234)*: voir la déclaration de 'fopen'


    Mais quand j'essaie de faire fonctionner mon code :

    Il y a des fenêtres qui s'ouvrent avec les boutons continuer et arrêter.

    "Exception non gérée à 0x7c812fd3 (kernel32.dll) dans Open_cv.exe*: Exception Microsoft C++*: cv::Exception à l'emplacement mémoire 0x0011fb08.."

    "Exception non gérée à 0x10021f86 dans Open_cv.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000018."

    Si j'appuie sur continuer :

    Une page qui s'ouvre dans Open_cv, à coté de mon code et qui dit:

    "Aucune source disponible, aucun symbole n'a été chargé pour un frame de pile des appels. Impossible d'afficher le code source"


    Dans la console j'ai un warning :
    Nom : error_console.png
Affichages : 299
Taille : 13,8 Ko


    j'ai deux fenêtres "edges" et "images" qui se sont ouvertes mais qui n'affiche rien (elles bug complétement)




    Si j'appuie sur arrêter la console et les fenêtres d'images ne s'affichent pas et j'obtiens en sortie :

    'Open_cv.exe'*: Déchargé 'C:\WINDOWS\system32\devenum.dll'
    'Open_cv.exe'*: Chargé 'C:\opencv8\build\x86\vc10\bin\opencv_ffmpeg248.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    Exception de première chance à 0x7c812fd3 (kernel32.dll) dans Open_cv.exe*: Exception Microsoft C++*: cv::Exception à l'emplacement mémoire 0x0011fb30..
    Exception non gérée à 0x7c812fd3 (kernel32.dll) dans Open_cv.exe*: Exception Microsoft C++*: cv::Exception à l'emplacement mémoire 0x0011fb30..
    Le programme '[3840] Open_cv.exe: Natif' s'est arrêté avec le code 0 (0x0).


    Après utilisation du déboguer il semblerait que l'erreur interviennent lors de l’exécution de :
    VideoCapture capture;

    car lorsque j'essaie de visualiser la valeur de capture a cette étape là j'obtiens
    "[0] = CXX0030: Erreur*: impossible d'évaluer l'expression" ...

    Les fenêtres s'affichent à partir de la ligne :
    capture>>frame;


    une idée ?


    Cordialement,

    Ronan

  4. #4
    Invité
    Invité(e)
    Par défaut
    Aucune importance en effet pour le message d'avertissement sur fopen().

    D'après ce qui apparaît sur ta console, il semble que l'image que tu tentes d'utiliser soit nulle. Sans doute un problème au niveau de la capture..

    Que souhaites-tu utiliser ?
    • Une webcam ou autre dispositif ? capture.open(0);
    • un fichier ? capture.open("C:\Documents and Settings\SY_R\red_car_video"); ne manque t-il pas l'extension ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut
    effectivement je veux utiliser un fichier

    j'ai modifié mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int _tmain(int argc, _TCHAR* argv[])
    {
            VideoCapture capture;
     
    		capture.open("C:\\Documents and Settings\\SY_R\\red_car_video.avi");
     
    		Mat frame, edges;
     
    		capture>>frame;
     
    		imshow("image:",frame);
     
            return 0;
    }

    Il n'y a plus d'erreur mais mon image ne s'affiche pas pour autant (sauf la console avec "appuyer sur un bouton ..."

    En sortie :

    Le thread 'Thread Win32' (0x5d8) s'est arrêté avec le code 0 (0x0).
    Le thread 'Thread Win32' (0x89c) s'est arrêté avec le code 0 (0x0).
    Le programme '[288] Open_cv.exe: Natif' s'est arrêté avec le code 0 (0x0).

  6. #6
    Invité
    Invité(e)
    Par défaut
    Rajoute waitKey(0); après ton imshow() sinon tu quittes immédiatement le programme.

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 75
    Par défaut
    justement je venais de le rajouter.

    ça et le fait qu'il y avait _tmain (je ne sais pas a quoi cela correspond mais à priori ça posait problème.

    Voici le code qui fonctionne :


    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
    int main()
    {
            VideoCapture capture;
     
    		capture.open("C:\\Documents and Settings\\SY_R\\red_car_video.avi");
     
     
    		Mat frame, edges;
     
    		capture>>frame;
     
    		cvNamedWindow ("image_essai", CV_WINDOW_AUTOSIZE);
     
    		imshow("image:",frame);
     
    		cvWaitKey (0);
            return 0;
    }

    Merci beaucoup pour votre aide,

    A bientôt

    Ronan

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème conversion as.numeric matrice
    Par ollorin dans le forum R
    Réponses: 1
    Dernier message: 02/07/2015, 17h02
  2. Problème de conversion de matrice en quaternion
    Par wperrad dans le forum Moteurs 3D
    Réponses: 6
    Dernier message: 03/05/2012, 23h14
  3. [Débutant] Problème conversion tableau de cellule en matrice
    Par niepoc dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/05/2008, 23h25
  4. Problème conversion float vers double
    Par jhenaff dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 27/01/2006, 10h39
  5. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05

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