Ejemplo n.º 1
0
//Réaltisé par Shuishan WANG
// Filtre sobel.
void Image::sobel2()
{
    clone1();
for(int i = 0 ; i < taille_ ; i++)
    {

        for(int j = 0 ; j < taille_ ; j++)
        {
            if(i == 0 || j == 0 || i == taille_ - 1 || j == taille_ - 1)
           {
                red_[i][j] = 0;
                blue_[i][j] = 0;
                green_[i][j] = 0;
           }
            red_[i][j] = (red_1[i][j]*0 +red_1[i][j-1]*0 +red_1[i][j+1]*0 +red_1[i-1][j]*2 +red_1[i-1][j+1]*1 +red_1[i-1][j-1]*1 +red_1[i+1][j-1]*-1 +red_1[i+1][j]*-2 +red_1[i+1][j+1]*-1);
            green_[i][j] = (green_1[i][j]*0 +green_1[i][j-1]*0 +green_1[i][j+1]*0 +green_1[i-1][j]*2 +green_1[i-1][j+1]*1 +green_1[i-1][j-1]*1 +green_1[i+1][j-1]*-1 +green_1[i+1][j]*-2 +green_1[i+1][j+1]*-1);
            blue_[i][j] = (blue_1[i][j]*0 +blue_1[i][j-1]*0 +blue_1[i][j+1]*0 +blue_1[i-1][j]*2 +blue_1[i-1][j+1]*1 +blue_1[i-1][j-1]*1 +blue_1[i+1][j-1]*-1 +blue_1[i+1][j]*-2 +blue_1[i+1][j+1]*-1);
            if(red_[i][j] > 255 )red_[i][j] = 255;
            if (red_[i][j] < 0)red_[i][j] = 0;
            if(green_[i][j] > 255 )green_[i][j] = 255;
            if (green_[i][j] < 0)green_[i][j] = 0;
            if(blue_[i][j] > 255 )blue_[i][j] = 255;
            if (blue_[i][j] < 0)blue_[i][j] = 0;
           }
        }
}
Ejemplo n.º 2
0
//Réaltisé par Shuishan WANG
// Filtre 1, flou.
void Image::flou()
{
    clone1();
    for(int i = 0 ; i < taille_ ; i++)
    {

        for(int j = 0 ; j < taille_ ; j++)
        {
           if(i == 0 || j == 0 || i == taille_ - 1 || j == taille_ - 1)
           {
                red_[i][j] = 0;
                blue_[i][j] = 0;
                green_[i][j] = 0;

           }
           else {
                int mRouge;
                int mVert;
                int mBleu;
                red_[i][j] = (red_1[i][j] +red_1[i][j-1] +red_1[i][j+1] +red_1[i-1][j] +red_1[i-1][j+1] +red_1[i-1][j-1] +red_1[i+1][j-1] +red_1[i+1][j] +red_1[i+1][j+1])/9;

                green_[i][j] =  (green_1[i][j] +green_1[i][j-1] +green_1[i][j+1] +green_1[i-1][j] +green_1[i-1][j+1] +green_1[i-1][j-1] +green_1[i+1][j-1] +green_1[i+1][j] +green_1[i+1][j+1])/9;

                blue_[i][j] = (blue_1[i][j] +blue_1[i][j-1] +blue_1[i][j+1] +blue_1[i-1][j] +blue_1[i-1][j+1] +blue_1[i-1][j-1] +blue_1[i+1][j-1] +blue_1[i+1][j] +blue_1[i+1][j+1])/9;
           }

        }
    }
}
Ejemplo n.º 3
0
//Réaltisé par Shuishan WANG
// Filtre sobel.
void Image::sobel3()
{
    clone1();
    clone2();
    for(int i = 0 ; i < taille_ ; i++)
    {

        for(int j = 0 ; j < taille_ ; j++)
        {
            if(i == 0 || j == 0 || i == taille_ - 1 || j == taille_ - 1)
           {
                red_[i][j] = 0;
                blue_[i][j] = 0;
                green_[i][j] = 0;

           }
           else
           {
            red_[i][j] = (red_2[i][j]*0 +red_2[i][j-1]*0 +red_2[i][j+1]*0 +red_2[i-1][j]*2 +red_2[i-1][j+1]*1 +red_2[i-1][j-1]*1 +red_2[i+1][j-1]*-1 +red_2[i+1][j]*-2 +red_2[i+1][j+1]*-1);
            green_[i][j] = (green_2[i][j]*0 +green_2[i][j-1]*0 +green_2[i][j+1]*0 +green_2[i-1][j]*2 +green_2[i-1][j+1]*1 +green_2[i-1][j-1]*1 +green_2[i+1][j-1]*-1 +green_2[i+1][j]*-2 +green_2[i+1][j+1]*-1);
            blue_[i][j] = (blue_2[i][j]*0 +blue_2[i][j-1]*0 +blue_2[i][j+1]*0 +blue_2[i-1][j]*2 +blue_2[i-1][j+1]*1 +blue_2[i-1][j-1]*1 +blue_2[i+1][j-1]*-1 +blue_2[i+1][j]*-2 +blue_2[i+1][j+1]*-1);
            red_[i][j] = red_[i][j]*red_[i][j];
            green_[i][j] = green_[i][j]*green_[i][j];
            blue_[i][j] = blue_[i][j]*blue_[i][j];

             red_1[i][j] = (red_2[i][j]*0 +red_2[i][j-1]*2 +red_2[i][j+1]*-2 +red_2[i-1][j]*0 +red_2[i-1][j+1]*-1 +red_2[i-1][j-1]*1 +red_2[i+1][j-1]*1 +red_2[i+1][j]*0 +red_2[i+1][j+1]*-1);
            green_1[i][j] = (green_2[i][j]*0 +green_2[i][j-1]*2 +green_2[i][j+1]*-2 +green_2[i-1][j]*0 +green_2[i-1][j+1]*-1 +green_2[i-1][j-1]*1 +green_2[i+1][j-1]*1 +green_2[i+1][j]*0 +green_2[i+1][j+1]*-1);
            blue_1[i][j] = (blue_2[i][j]*0 +blue_2[i][j-1]*2 +blue_2[i][j+1]*-2 +blue_2[i-1][j]*0 +blue_2[i-1][j+1]*-1 +blue_2[i-1][j-1]*1 +blue_2[i+1][j-1]*1 +blue_2[i+1][j]*0 +blue_2[i+1][j+1]*-1);
            red_1[i][j] = red_1[i][j]*red_1[i][j];
            green_1[i][j] = green_1[i][j]*green_1[i][j];
            blue_1[i][j] = blue_1[i][j]*blue_1[i][j];

            red_[i][j] = sqrt(red_[i][j] + red_1[i][j]);
            green_[i][j] = sqrt(green_[i][j] + green_1[i][j]);
            blue_[i][j] = sqrt(blue_[i][j] + blue_1[i][j]);

            if(red_[i][j] > 255 )red_[i][j] = 255;
            if (red_[i][j] < 0)red_[i][j] = 0;
            if(green_[i][j] > 255 )green_[i][j] = 255;
            if (green_[i][j] < 0)green_[i][j] = 0;
            if(blue_[i][j] > 255 )blue_[i][j] = 255;
            if (blue_[i][j] < 0)blue_[i][j] = 0;

           }
        }
    }
}
Ejemplo n.º 4
0
pid_t launch_child(int flags, child_options *chldopts, int (*fn)(void *), void *arg) {
  pid_t ret;

  if(chldopts->daemonize) {
    ret = fork();
    switch(ret) {
      case 0:
        /* Do some cleanup in the child */
        close_fd(&(chldopts->sfd));
        restore_sigmask(&(chldopts->old_sigmask));
        /* Become a session leader */
        if( setsid() == -1 )
          errExit("setsid");
        /* In the child, go on */
        break;
      default:
        /* Parent, drop all capabilities from the permitted capability set */
        drop_caps_forever();
        return ret;
    }
  }

  need_cap(CAP_SYS_ADMIN);
  ret = clone1(flags);
  switch(ret) {
    case 0:
      /* Drop all capabilities from the effective capability set */
      drop_caps();
      /* Do some cleanup in the child */
      close_fd(&(chldopts->sfd));
      restore_sigmask(&(chldopts->old_sigmask));
      /* Call the function */
      fn(arg);
      /* The last call should not have returned */
      exit(EXIT_FAILURE);
    default:
      if(chldopts->daemonize)
        /* Parent, we exit right away */
        exit(EXIT_SUCCESS);
      else {
        /* Parent, drop all capabilities from the permitted capability set */
        drop_caps_forever();
        return ret;
      }
  }
}