Software > Programmation / Optimisation

Transformer un code hors ligne en mode en ligne

(1/4) > >>

djwa:
Bonjour,

j'ai un programme qui fonctionne sur un robot munie d'une webcam.
Je voudrais le modifier pour qu'il puisse fonctionner en mode hors ligne
c'est a dire sur un pc avec une image que je lui donne et non les image fournie par la webcam.

Voilà le code:

--- Code: ---#include <stdio.h>
#include <stdlib.h>
#include <cc3.h>
#include <cc3_ilp.h>
#include <cc3_color_track.h>


void simple_track_color(cc3_track_pkt_t* t_pkt);

int main(void) {
  cc3_track_pkt_t t_pkt;


  cc3_uart_init (0,
CC3_UART_RATE_115200,
CC3_UART_MODE_8N1,
CC3_UART_BINMODE_TEXT);

  cc3_camera_init ();


  //cc3_camera_set_colorspace(CC3_COLORSPACE_YCRCB);
  cc3_camera_set_resolution(CC3_CAMERA_RESOLUTION_LOW);
  //cc3_pixbuf_frame_set_subsample(CC3_SUBSAMPLE_NEAREST, 2, 2);
 

  // init pixbuf with width and height
  cc3_pixbuf_load();

  // Load in your tracking parameters
  t_pkt.lower_bound.channel[CC3_CHANNEL_RED] = 150;
  t_pkt.upper_bound.channel[CC3_CHANNEL_RED] = 255;
  t_pkt.lower_bound.channel[CC3_CHANNEL_GREEN] = 0;
  t_pkt.upper_bound.channel[CC3_CHANNEL_GREEN] = 50;
  t_pkt.lower_bound.channel[CC3_CHANNEL_BLUE] = 0;
  t_pkt.upper_bound.channel[CC3_CHANNEL_BLUE] = 50;
  t_pkt.noise_filter = 2;

 
  while(true) {
    simple_track_color(&t_pkt);
    printf( "centroid = %d,%d bounding box = %d,%d,%d,%d num pix= %d density = %d\n",
    t_pkt.centroid_x, t_pkt.centroid_y,
    t_pkt.x0,t_pkt.y0,t_pkt.x1,t_pkt.y1,
    t_pkt.num_pixels, t_pkt.int_density );

   }
 
}


void simple_track_color(cc3_track_pkt_t * t_pkt)
{
  cc3_image_t img;

  img.channels = 3;
  img.width = cc3_g_pixbuf_frame.width;
  img.height = 1;               // image will hold just 1 row for scanline processing
  img.pix = cc3_malloc_rows (1);
  if (img.pix == NULL) {
    return;
  }

    cc3_pixbuf_load ();
    if (cc3_track_color_scanline_start (t_pkt) != 0) {
      while (cc3_pixbuf_read_rows (img.pix, 1)) {
   // This does the HSV conversion
   // cc3_rgb2hsv_row(img.pix,img.width);
           cc3_track_color_scanline (&img, t_pkt);
          }
        }
    cc3_track_color_scanline_finish (t_pkt);

  free (img.pix);
  return;
}




--- End code ---

Est ce que quelqu'un pourrais m'aider? Merci.

radeon4ever:
la dessus, je ne peux pas t'aider car je ne m'y connais pas assez. Par contre, ce que je sais c'est que le flo va pouvoir t'aider correctement car c'est un pro en programmation ;)

Goten:
Manque du code. On peut pas t'aider là, envoie une tarball au pire. et ça m'a l'air d'être un truc assez gros,  perso j'ai vraiment pas le temps de me pencher dessus, donc si tu dégrossis pas le truc, je passe la main. (et ça m'étonnerait que le patch soit trivial).

flo:

--- Citation de: Goten le 26 mai 2010 à 22:04:56 ---Manque du code. On peut pas t'aider là, envoie une tarball au pire. et ça m'a l'air d'être un truc assez gros,  perso j'ai vraiment pas le temps de me pencher dessus, donc si tu dégrossis pas le truc, je passe la main. (et ça m'étonnerait que le patch soit trivial).

--- End quote ---
Dans quel sens ?

flo:
Djwa, as tu bien compris à quoi sert ce code et comment il interagit ?

Si j'ai bien compris, fonctionnellement, tu souhaites faire un mode connecté (utilisation de la webcam) et un mode déconnecté (utilisation d'une image). Il suffit donc de changer la source.

Techniquement, la réponse est simple en 2 points :
* Ta fonction écoute la web cam et retranscrit les images lignes à lignes.  C'est ce que fait ta classe, je suppose que la lib nommée cc3 derrière se charge de récup les images et toi tu les lis ligne à ligne. Je vois que tu as fait un début de thread pour boucler sur les images.
* En fait, il te faut une deuxième fonction qui va tout simplement lire un fichier et récup ligne à ligne les informations. ATTENTION : En C/C++, les formats d'images (type png, jpg etc.) sont à prendre en compte et ne répondent pas toujours aux mêmes specs alors cherche bien sur le net. Tu devrais même pouvoir trouver des samples, je pense.

Navigation

[0] Index des messages

[#] Page suivante

Go to full version