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 :

Accès rapide aux pixels en Python


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut Accès rapide aux pixels en Python
    Bonjour
    j'aimerais savoir comment faire pour acceder aux pixels sous Python de manire rapide.
    J'ai vu qu'il existe des macro d'acces rapide, mais je ne sait pas comment on s'en sert, et il semble que cela soit valable pour C++ uniquement

    Merci de m'aider

  2. #2
    Membre éprouvé Avatar de hunta_kirua
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Par défaut
    Bonjour,

    Je n'utilise pas Python mais es-tu allé voir sur le wiki d'opencv. Sinon, j'ai trouvé quelques wrappers mais je ne sais pas si ça t'aidera (http://github.com/cv/opencv-wrappers/tree/master et http://wwwx.cs.unc.edu/~gb/wp/blog/2...-using-ctypes/)

    A+,

    Hunta

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut
    Merci, mais j'ai deja cherché de ce coté
    En fait, ce qui m'interesserait, c'est que quelqu'un m'explique le chapitre intitulé Pixel Access Macros du doc de reference:
    http://www.cs.unc.edu/Research/stc/F...enceManual.pdf

    Visiblement ça pourrait être la solution, mais pour faire ça avec Python, je ne connais pas assez.

  4. #4
    Membre éprouvé Avatar de hunta_kirua
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Par défaut
    Re,

    Désolé mais je ne pourrais pas t'aider avec Python. Pour les macros, il faut déclarer un CvPixelPosition8u ou CvPixelPosition32f puis l'initialiser avec CV_INIT_PIXEL_POS etc. mais je ne sais pas du tout si c'est exploitable en python. Je suppose que si tu veux utiliser les macros, c'est que tu n'as pas possibilité d'accéder directement à la mémoire ?

    A+,

    Hunta

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut
    Mouais
    Je suis pas super balèze en prog donc les macros ne me parlent pas.
    Pour le moment, j'utilise la fonction MinMaxLoc, et je l'applique ligne après ligne sur mon image. C'est assezrapide, mais je pense qu'il y a moyen de faire mieux.

    Mon but est en fait d'extraire une ligne laser de mon image. Je procède en balayant chaque ligne de mon image jusqu'a ce que je trouve le maximum d'intensité. Mais cela prend environ 20ms par image, ce qui est long, je pense qu'avec OpenCV, on pourrait améliorer cela.

    Je met mon code, il n'est pas très long, si qqun peut m'aider
    Merci

    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
    def Laser(filename,seuil,v):
      from opencv.cv import *
      from opencv.highgui import *
      t1=cvGetTickCount( )
     
      h=int(GetValue('Paramètres.haut'))
      b=int(GetValue('Paramètres.bas'))
      g=int(GetValue('Paramètres.gauche'))
      d=int(GetValue('Paramètres.droite'))
     
      img=cvLoadImage(filename,1);
      src_image=cvCreateImage(cvSize(img.width,img.height),IPL_DEPTH_8U,1);
      cvCvtColor(img,src_image,CV_BGR2GRAY );#conversion en niveau de gris
     
      lineimage = cvCreateImage (cvSize (d-g,1), 8, 1)
     
      minVal=0
      maxVal=0
      minLoc=cvPoint(0,0)
      maxLoc=cvPoint(0,0)
      tab=[]
      ligne2=[]
      for i in range(h,b):
        rect = cvRect(g,i,d-g,1)
        lineimage=cvGetSubRect(src_image, rect ) #extraction d'une ligne de mon image
        [minVal, maxVal]=cvMinMaxLoc(lineimage,minLoc,maxLoc,None) #recherche du max d'intensité sur ma ligne
        tab.append([i,maxLoc.x+g,maxVal])
        if(int(tab[i-h][2])>=seuil):
          ligne2.append(tab[i-h])
          if v:
            DrawMarker('',tab[i-h][0],tab[i-h][1],'Red',1,2)
        else:
          ligne2.append([0,0,0])
        cvReleaseData(lineimage)
     
      cvReleaseData(src_image)
      cvReleaseData(img)
      t=cvGetTickCount( )-t1
      print "Temps d'extraction fonction = %g ms" % (t/(cvGetTickFrequency()*1000.));
     
      return(ligne2)

Discussions similaires

  1. [Android] Velocity : accès rapide aux données des stations LE vélo STAR
    Par mickaellf dans le forum Mon application mobile
    Réponses: 0
    Dernier message: 25/08/2011, 15h07
  2. Acces rapide aux contrôles d'un Dialog
    Par Trap D dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 21/06/2011, 17h24
  3. Acces rapide aux données
    Par new.proger dans le forum JDBC
    Réponses: 4
    Dernier message: 18/07/2007, 15h19
  4. acces aux pixels d'une image
    Par bassidi meryeme dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/10/2005, 11h20
  5. Accés rapide aux propriétés d'un Objet
    Par Alacazam dans le forum C++Builder
    Réponses: 4
    Dernier message: 28/11/2002, 21h56

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