Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2

    C/C++ Help

    Ciao a tutti avrei bisogno di un aiutino. Non so se me lo potete risolvere, io ovviamente non sono un programmatore. Espongo il problema: Ho un file di testo contenente terne RGB di immagini provenienti da macchine digitali io devo convertirle in HSL(o HSI) inserisco 2 file (.c e l'header) dove sono presenti le formule di conversione. Se potete farmi questo faore mi risolvete un problemone. Grazie per l'attenzione torno a studiare.


    //conv.c
    double Arrotonda(double valore)
    {
    double fraz,integ,round;

    fraz=modf(valore,&integ);
    if (fraz<=0.5) round=integ;
    else round=integ+1;
    return(round);
    }
    //------------------------------------------------------------------------------
    double Normalizza(double valore)
    {
    double norm;

    norm=valore/255;
    return(norm);
    }
    //------------------------------------------------------------------------------
    double Mio_abs(double num)
    {
    double abs;

    if (num<0) abs=-num;
    else abs=num;
    return(abs);
    }
    //------------------------------------------------------------------------------
    float Mio_min(float n,float m)
    {
    if (n <= m)
    return(n);
    else
    return(m);
    }
    //------------------------------------------------------------------------------
    void rgb2h(unsigned char **image_input, unsigned char *hImage, int H, int W)
    {
    double num,den1,den2,bu,nonso;
    float r,g,b;
    int i,j;
    float temp;


    for(i=0;i<H;i++)
    for(j=0;j<W;j++)
    {
    r = ((float) image_input[0][i*W+j]/255);
    g = ((float) image_input[1][i*W+j]/255);
    b = ((float) image_input[2][i*W+j]/255);

    if (r == 0 && g == 0 && b == 0)
    hImage[i*W+j] = 0;
    else if (r == 1 && g == 1 && b == 1)
    hImage[i*W+j] = 0;

    else
    {
    num = (2*r-g-b);
    den1 = pow(r-g,2);
    bu = den1+((r-b)*(g-b));
    nonso = Mio_abs(bu);
    den2 = sqrt(nonso);
    if (den2 == 0)
    den2 = den2 + 0.0000001;
    temp = Arrotonda(((acos(0.5*(num/den2)))/3.14)*180);
    if (b > g)
    hImage[i*W+j] = ((360 - temp)/360)*255;
    else
    hImage[i*W+j] = (temp/360)*255;

    bu=0;den1=0;den2=0;num=0;nonso=0;
    }
    }
    }

    //----------------------------------------------------------------------------
    void rgb2s(unsigned char **image_input, unsigned char *sImage, int H, int W)
    {
    float r,g,b, temp;
    int i, j;

    for(i=0;i<H;i++)
    for(j=0;j<W;j++)
    {
    r = ((float) image_input[0][i*W+j]/255);
    g = ((float) image_input[1][i*W+j]/255);
    b = ((float) image_input[2][i*W+j]/255);

    if (r == 0 && g == 0 && b == 0)
    sImage[i*W+j] = 255;
    else
    {
    temp = 1-((3/(r+g+b))*Mio_min(r,Mio_min(g,b)));
    sImage[i*W+j] = (unsigned char) Arrotonda(temp*255);
    }
    }
    }

    //------------------------------------------------------------------------------
    void rgb2l(unsigned char **image_input, unsigned char *lImage, int H, int W)
    {
    int i, j;

    for(i=0; i<H; i++)
    for(j=0; j<W; j++)
    lImage[i*W+j] = (image_input[0][i*W+j] + image_input[1][i*W+j] + image_input[2][i*W+j]) / 3;
    }

    //conv.h
    double Arrotonda(double valore);
    double Normalizza(double valore);
    double Mio_abs(double num);
    float Mio_min(float n,float m);
    void rgb2h(unsigned char **image_input, unsigned char *hImage, int rows, int cols);
    void rgb2s(unsigned char **image_input, unsigned char *sImage, int rows, int cols);
    void rgb2l(unsigned char **image_input, unsigned char *lImage, int rows, int cols);



    Il file di testo è tipo:
    230 14 115
    123 124 211
    121 223 33
    .....

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,333

    Moderazione

    Benvenuto nel forum di Programmazione.

    Dato che sei nuovo, ti segnalo il Regolamento che contiene tutte le regole da seguire per una convivenza pacifica all'interno del forum, inclusi trucchi e suggerimenti per sfruttarlo al meglio...da leggere assolutamente!

    In merito alla discussione che hai aperto, il forum non è quello corretto: quest'area è dedicata a Visual Basic e ai linguaggi per il .NET Framework, mentre gli altri linguaggi e ambienti sono trattati nel forum più generico in cui sposterò questa discussione.

    Inoltre, ti suggerisco di attribuire titoli meno generici alla discussione indicando sempre, oltre al linguaggio di programmazione come giustamente hai fatto, anche una breve e sintetica descrizione del problema.

    Detto questo...ciao e buon forum!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2

    grazie

    grazie del benvenuto!!Mi metto subito a leggere il regolamento!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.