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

Visual C++ Discussion :

Violation d'accès lors de la lecture de l'emplacement 0x000


Sujet :

Visual C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Violation d'accès lors de la lecture de l'emplacement 0x000
    Bonjour,
    j'ai un problème dont je connais ni la cause ni la solution.
    J'essayes de compiler un programme que j'ai trouver sur internet, c'est un programme pour la kinect il est en c++.
    j'ai fait toutes les configuration concernant la liaison de la kinect avec visual c++ 2012. Quand je compile, y a un message d'erreur qui apparaît :
    Exception non gérée à 0x0F20902A (OpenNI2.dll) dans ConsoleApplication3.exe*: 0xC0000005*: Violation d'accès lors de la lecture de l'emplacement 0x00000000.
    voilà le 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
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    #include "stdafx.h"
    #include <iostream>
    #include "OpenNI.h"
     
    int main( int argc, char** argv )
    {
        // 
        openni::OpenNI::initialize();
     
        // 
        openni::Device devAnyDevice;
        devAnyDevice.open( openni::ANY_DEVICE );
     
        // 
        openni::VideoStream streamDepth;
        streamDepth.create( devAnyDevice, openni::SENSOR_DEPTH );
        streamDepth.start();
     
        // 
        openni::VideoStream streamColor;
        streamColor.create( devAnyDevice, openni::SENSOR_COLOR );
        streamColor.start();
     
        // 
        openni::VideoFrameRef frameDepth;
        openni::VideoFrameRef frameColor;
        for( int i = 0; i < 1000; ++ i )
        {
            // 
            streamDepth.readFrame( &frameDepth );
            streamColor.readFrame( &frameColor );
     
            // 
            const openni::DepthPixel* pDepth
                = (const openni::DepthPixel*)frameDepth.getData();
            const openni::RGB888Pixel* pColor
                = (const openni::RGB888Pixel*)frameColor.getData();
     
            // 
            int idx = frameDepth.getWidth() * ( frameDepth.getHeight() + 1 ) / 2;
            std::cout  << pDepth[idx]  << "( "
                << (int)pColor[idx].r << ","
                << (int)pColor[idx].g << ","
                << (int)pColor[idx].b << ")"
                << std::endl;
        }
     
        // 
        streamDepth.destroy();
        streamColor.destroy();
     
        // 
        devAnyDevice.close();
     
        // 
        openni::OpenNI::shutdown();
     
        return 0;
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Quand tu compiles, ou quand tu exécutes?

    PS: Ton erreur, c'est que quelque chose tente de déréférencer un pointeur nul. Ça n'a rien de spécifique à Visual, c'est plutôt un truc lié à OpenNI.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour Médinoc et merci pour votre réponse.
    en fait, je voulais dire quand j’exécute.
    ce qui est bizarre c'est que le même code marche bien sur le pc de mon collègue. Alors que pour moi, tout les codes de ce genre me donne ce problème. donc d'après ce que vous dites, le problème est d'openNI. je vais essayer de le réinstaller. qu'en pensez vous?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Pas forcément un problème dans OpenNI lui-même, plus une histoire d'appeler une fonction d'OpenNI en lui passant un pointeur nul (ou un objet d'OpenNI contenant un pointeur nul).

    Une chose que j'ai remarqué, c'est que ton code ne fait pas de vérification d'erreur: Tu ne vérifies pas si un open() ou un create() échoue..

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    bonjour,
    je reviens après une longue période d'examens. s'il vous plait, j'ai toujours le même problème. je ne sais pas quoi faire, j'essayes avec un autre code mais cette fois ci un autre message d'erreur, mais je pense que c'est toujours le même contexte.
    Voila le message d'erreur : "Exception de première chance à 0x60D64F27 (OpenNI2.dll) dans opencv.exe*: 0xC0000005*: Violation d'accès lors de la lecture de l'emplacement 0x00000000."

    voici le 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
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    #define _CRT_SECURE_NO_DEPRECATE
    #include "stdafx.h"
    #include <iostream>
    #include <Windows.h>
    #include <MSR_NuiApi.h>
    #include <vector>
    #include <math.h>
    #include <algorithm>
    #include <numeric>
    #include <sstream>
    #include <string>
    #include "openNI.h"
    #include "opencv2\core\core.hpp"
    #include "opencv2\highgui\highgui.hpp"
    #include "cv.h"
    #include "highgui.h"
    #include <cv.h>
    #include "highgui.h"
    using namespace std;
    using namespace cv;
    int main()
    {
     
     
    	openni::OpenNI::initialize();
    	openni::Device device;
    	device.open(openni::ANY_DEVICE);
    	device.setImageRegistrationMode(openni::IMAGE_REGISTRATION_DEPTH_TO_COLOR );
    	openni::VideoStream color;
    	if(device.getSensorInfo(openni::SENSOR_DEPTH) != NULL)
    	{  //if(depth.start() != openni::STATUS_OK)
     
    		openni::VideoFrameRef depthFrame, colorFrame;
    		//depth.readFrame(&depthFrame);
    		color.readFrame(&colorFrame);
    		if(depthFrame.isValid() && colorFrame.isValid())
    		{cv::Mat depth(480,640,CV_16UC1,(void*)depthFrame.getData(), 2*640);
    		cv::Mat depthNorm;
    		cv::normalize(depth, depthNorm, 0, 255, CV_MINMAX, CV_8UC1);
    		imshow("Depth", depthNorm);
    		cv::Mat bgrMat,rgbMat(480,640,CV_8UC3,(void*)colorFrame.getData(),3*640);
    		cv::cvtColor(rgbMat,bgrMat, CV_RGB2BGR);// opencv expects the image in BGR format
    		imshow("Color", bgrMat);
     
    		}}
    	//depth.stop();
    //depth.destroy();
    color.stop();
    color.destroy();
    device.close();
     
    return 0;
    }
    veuillez m'aider svp je suis très perdu et je n'avance pas à cause de ça.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    heeelp

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 157
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    quand tu débugues (en mode débug), où se situe l'erreur?

    G 13.

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/05/2015, 13h58
  2. Réponses: 7
    Dernier message: 01/11/2014, 17h07
  3. Réponses: 2
    Dernier message: 09/11/2010, 21h51
  4. Réponses: 5
    Dernier message: 01/12/2009, 01h06
  5. Réponses: 7
    Dernier message: 13/08/2009, 09h01

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