Partage
  • Partager sur Facebook
  • Partager sur Twitter

récupérer le code RGB de chaque pixel d'une image

lightpainting Arduino

    18 février 2018 à 11:16:22

    Bonjour à tous et à toutes, 

    Dans le cadre d'un projet perso de fabrication d'un pixel stick (si vous voulez voir ce dont il s'agit, voici un lien : http://www.thepixelstick.com/), je souhaite pouvoir lire une image de longueur L et de hauteur maximale 144 (nombre de LED que j'ai).

    Mon but est de récupérer le code RGB de chaque pixel afin de l'insérer dans trois tableaux de 2 dimensions (1 par couleur).

    J'aurais ainsi, ligne par ligne, le code de couleur à afficher sur chaque LED de mon bandeau et je pourrais faire du light painting.

    Mon soucis est que je ne suis pas bon en C++, j'apprends seul, et donc je ne trouve pas de moyen accessible pour moi d'arriver au résultat que je souhaite, je suis obligé de me cantonner à du pixel art simple et je ne peux rien "peindre" d'élaboré...

    Voici typiquement le genre de bannière que j'aimerais lire et récupérer le code des couleurs.

    Au cas où (probable) mon explication ci-dessus n'est pas claire : 

    J'ai un bandeau de 144 LED RGB fixée sur un bâton, et je souhaite y afficher l'image ci-dessus colonne par colonne.

    Actuellement je me contente de 10 couleurs, et d'un seul et unique tableau que j'injecte dans le bandeau au fur et à mesure.

    Voici mon code : 

    #include <Adafruit_NeoPixel.h>
    //renseigner la taille totale du tableau
    int Tailletableau = 2016;
    unsigned char Dessin[2016] = {1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,0,1,1,1,1,1,1,6,6,0,1,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,0,0,0,1,1,1,1,0,6,6,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,6,6,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,6,6,0,1,1,1,1,0,0,0,0,1,1,1,1,1,6,6,0,1,1,1,1,0,0,0,0,1,1,1,1,1,6,6,0,1,1,1,1,0,0,0,0,1,1,1,1,1,6,6,0,1,1,1,1,0,0,0,0,1,1,1,1,1,6,6,0,1,1,1,1,0,0,0,0,1,1,1,1,1,6,6,0,1,1,1,1,0,0,0,0,1,1,1,1,1,6,6,0,1,1,1,1,0,0,0,0,1,1,1,1,1,6,6,0,1,1,1,1,1,1,1,1,1,1,0,6,6,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,6,6,0,0,1,1,0,0,0,1,1,1,1,1,1,0,6,6,0,0,1,1,0,0,0,1,1,1,1,1,1,0,6,6,0,0,1,1,0,0,0,1,1,1,1,1,1,0,6,6,0,0,1,1,0,0,0,1,1,1,1,1,1,0,6,6,0,0,1,1,0,0,0,1,1,1,1,1,1,0,6,6,0,0,1,1,0,0,0,1,1,1,1,1,1,0,6,6,0,0,1,1,0,0,0,1,1,1,1,1,1,0,6,6,0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0};
    
    unsigned char Couleurs [10][3] = {{0,0,0},
                                     {0,0,255},
                                     {0,255,255},
                                     {160,255,255},
                                     {160,224,32},
                                     {96,192,32},
                                     {128,32,64},
                                     {224,32,64},
                                     {255,32,32},
                                     {255,255,0}};
    
    
    unsigned char HauteurDessin = 144;
    
    unsigned short int Index = 0;
    unsigned char NumLed = 0;
    unsigned short int Boucle = 1;
    unsigned short int Temps = 100;
    unsigned short int i =0;
    //bandeau de 8 LED sur la broche 3. Il faut changer le premier chiffre pour le nombre de LED
    //NB : s'il y a plus de 8 LED, penser à modifier aussi le nombre plus bas !!
    Adafruit_NeoPixel strip_pin3 = Adafruit_NeoPixel(HauteurDessin,3, NEO_GRB + NEO_KHZ800);
    
    
    void setup()
    {
    
    
      strip_pin3.begin();
      strip_pin3.show();
    
      
    }
    
    void loop()
    {  
      for (Boucle = 1;Boucle<100 ; Boucle++)
      {
        if (Index>=Tailletableau)
              {
                Index=0;
              }
              
        strip_pin3.setBrightness(30);
        strip_pin3.show();
        
      
     // i = 8 parce 8 LED, changer ce chiffre s'il y a plus de LED. 
      while (i<HauteurDessin && Index <Tailletableau)
        {   
        
    //la ligne ci-dessous affiche sur les LED de mon bandeau les couleurs correspondantes au code du dessin
              strip_pin3.setPixelColor(NumLed,Couleurs[Dessin[Index]][0],Couleurs[Dessin[Index]][1],Couleurs[Dessin[Index]][2]);
         
            
            i++; 
            NumLed++;
            Index++;
           
    
    
    }
    delay  (Temps);
    i=0;
    NumLed=0;
    }
    
    }
    

    Le but étant de remplacer le tableau "Dessin" Par trois tableaux contenants directement les couleurs de chaque pixel.

    Merci d'avance de votre aide, je suis dispo pour apporter les éclaicissements nécessaires !

    -
    Edité par NicolasJosse 18 février 2018 à 11:18:06

    • Partager sur Facebook
    • Partager sur Twitter
      24 février 2018 à 23:22:38

      Je vous conseille de poser des questions sur l'Arduino sur un forum qui lui est dédié.

      Chaque format d'image dispose de leur propre spécificité.

      Je vous conseille d'avoir un utilitaire qui prendra un fichier en entrée avec un format particulier pour en générer une représentation compatible avec votre code source.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

      récupérer le code RGB de chaque pixel d'une image

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown