HTML.it è il sito italiano del web publishing

[C++] Trasformare i valori dei pixel da RGB a YCrCb



scegli un altro forum
    Indietro   Ricarica   Avanti Invia una risposta

Autore
Discussione     
iamwill
Utente di HTML.it



Registrato il: Aug 2011

Provenienza:

Messaggi: 24


ICQ:

MSN:

Skype:


[C++]Trasformare i valori dei pixel da RGB a YCrCb
Ciao vorrei sapere come devo fare per sostituire i valori dei pixel RGB di una immagine in valori che si trovano tramite una matrice...

Finora sono arrivato qui (devo usare per forza le opencv):


codice:
#include <highgui.h> 
#include <cxcore.h> 
#include <cv.h> 
#include <iostream> 
#include <string.h> 
#include <stdio.h> 
int main (void) 
{ 
unsigned char Red, Green, Blue; 
int CounterX, CounterY; 
IplImage *src; 
char name [255]="c:\\lena.png"; //questa l'immagine che carico 
cvNamedWindow("window src",CV_WINDOW_AUTOSIZE); 
src=cvLoadImage(name,1); 
for (CounterY=0; CounterY<src->height; CounterY++) 
{ 
for (CounterX=0; CounterX<src->width; CounterX++) 
{ 
Red = *((unsigned char*)(src->imageData + src->widthStep*CounterY) + 3*CounterX + 2); Green = *((unsigned char*)(src->imageData + src->widthStep*CounterY) + 3* (CounterX) + 1); 
Blue = *((unsigned char*)(src->imageData + src->widthStep*CounterY) + 3*CounterX + 0);
 } 
cvShowImage("window src", src); 
 cvWaitKey (0);
 cvDestroyWindow("window src"); 
cvReleaseImage (&src); }


La domanda è dove mettere la mia matrice e in che maniera?

In realtà mi dovrebbe venire fuori un'immagine con delle nuove variabili per ogni pixel...sto procedendo bene?

Ultima modifica ad opera dell'utente iamwill il 09-06-2012 alle 14:01

Segnala ad un moderatore | IP: Collegato | Permalink

iamwill è offline Old Post 09-06-2012 13:43
Clicca qui per vedere il profilo dell'utente iamwill Clicca qui per inviare all'utente iamwill un messaggio privato Visualizza ulteriori messaggi scritti dall'utente iamwill Aggiungi l'utente iamwill alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
iamwill
Utente di HTML.it



Registrato il: Aug 2011

Provenienza:

Messaggi: 24


ICQ :

MSN :

Skype :


http://forum.html.it/forum/showthre...95#post13653695

qui spiego un problema un tantino diverso ma più semplice...qualcuno ha qualche suggerimento da darmi per creare questa cosa?

Segnala ad un moderatore | IP: Collegato | Permalink

iamwill è offline Old Post 18-06-2012 16:18
Clicca qui per vedere il profilo dell'utente iamwill Clicca qui per inviare all'utente iamwill un messaggio privato Visualizza ulteriori messaggi scritti dall'utente iamwill Aggiungi l'utente iamwill alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
oregon
Utente di HTML.it



Registrato il: Jul 2005

Provenienza: Roma

Messaggi: 30847


ICQ :

MSN :

Skype :


Mica spieghi bene il problema ... hai dei dati da convertire ? Li prendi dall'array originale, li converti e li conservi nello stesso array. Ovviamente perderai l'immagine originale.

Se non la vuoi perdere, alloca un nuovo array e memorizzaci i dati convertiti.

Spero di avere capito qualcosa ...


__________________
La guida di VB6 ... usala!
Se cerchi una API ...
No MP tecnici (non rispondo nemmeno!), usa il forum.

Segnala ad un moderatore | IP: Collegato | Permalink

oregon è offline Old Post 18-06-2012 16:29
Clicca qui per vedere il profilo dell'utente oregon Clicca qui per inviare all'utente oregon un messaggio privato Visita l'homepage dell'utente oregon Visualizza ulteriori messaggi scritti dall'utente oregon Aggiungi l'utente oregon alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
iamwill
Utente di HTML.it



Registrato il: Aug 2011

Provenienza:

Messaggi: 24


ICQ :

MSN :

Skype :


Io ho un'immagine in ingresso.
Dell'immagine in out mi interessa poco nel senso che una volta letti i pixel vorrei descrivere la mia immagine con altri valori che ottengo dai valori RGB...

Come devo fare? Una volta iniziato il ciclo come devo incamerare i valori in un altro posto?

Segnala ad un moderatore | IP: Collegato | Permalink

iamwill è offline Old Post 18-06-2012 16:40
Clicca qui per vedere il profilo dell'utente iamwill Clicca qui per inviare all'utente iamwill un messaggio privato Visualizza ulteriori messaggi scritti dall'utente iamwill Aggiungi l'utente iamwill alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
escocat
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 184


ICQ :

MSN :

Skype :


Bho non capisco.... la prima immagine la esplori e carichi i colori dei pixel in un array c(x, y). Da ogni elemento c (data una ascissa x e una ordinata y dell'immagine) estrai le tre componenti R(c), G(c), B(c) e li trasformi come vuoi per ottenere un colore c'(R', G', B') "trasformato" che metterai in un secondo array c'(x, y). Se vuoi puoi modificare l'immagine stessa sostituendo i suoi pixel con quelli nuovi oppure copiare i nuovi pixel in una seconda immagine.

Segnala ad un moderatore | IP: Collegato | Permalink

escocat è offline Old Post 18-06-2012 16:55
Clicca qui per vedere il profilo dell'utente escocat Clicca qui per inviare all'utente escocat un messaggio privato Visualizza ulteriori messaggi scritti dall'utente escocat Aggiungi l'utente escocat alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
oregon
Utente di HTML.it



Registrato il: Jul 2005

Provenienza: Roma

Messaggi: 30847


ICQ :

MSN :

Skype :


Citazione:
...sostituendo i suoi pixel con quelli nuovi oppure copiare i nuovi pixel in una seconda immagine


Che è quello che gli ho detto anch'io ...

Citazione:
Bho non capisco....


Anche questo l'ho detto io ...

Citazione:
Una volta iniziato il ciclo come devo incamerare i valori in un altro posto?


Cosa non ti è chiaro di ciò che ti è stato detto? Crea un nuovo array e ci metti i dati che hai trasformato ...


__________________
La guida di VB6 ... usala!
Se cerchi una API ...
No MP tecnici (non rispondo nemmeno!), usa il forum.

Segnala ad un moderatore | IP: Collegato | Permalink

oregon è offline Old Post 18-06-2012 18:20
Clicca qui per vedere il profilo dell'utente oregon Clicca qui per inviare all'utente oregon un messaggio privato Visita l'homepage dell'utente oregon Visualizza ulteriori messaggi scritti dall'utente oregon Aggiungi l'utente oregon alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
iamwill
Utente di HTML.it



Registrato il: Aug 2011

Provenienza:

Messaggi: 24


ICQ :

MSN :

Skype :


Ragazzi sono ancora qui bloccato a fare un array decente...

Ho sviluppato questo finora:
rispetto a prima ho messo una struct colorrgb per incamerare i futuri valori dei pixel
Please aiutatemi...non ne esco più da questa assurdità




codice:
struct colorRGB 
{
 float red; 
float green;
 float blue; 
};
 void PixelFeature::RgbtoYCrCb 
{ 
unsigned char Red, Green, Blue; 
int CounterX, CounterY, i; 
IplImage *src; 
char name [255]="c:\\lena.png"; 
cvNamedWindow("window src",CV_WINDOW_AUTOSIZE); 
Red = *((unsigned char*)(src->imageData + src->widthStep*CounterY) + 3*CounterX + 2); Green = *((unsigned char*)(src->imageData + src->widthStep*CounterY) + 3*CounterX + 1); 
Blue = *((unsigned char*)(src->imageData + src->widthStep*CounterY) + 3*CounterX + 0); 
for 
(int i=0; i<(src->height*src->width)-1; i++) 
{ 
colorRGB element; 
element.red = Red;  
element.green = Green; 
element.blue = Blue; 
image.push_back(element); 
}



ora per sapere se i valori sono stati copiati dentro l'array come devo fare? e per poterli cambiare di valore?
Vi prego datemi un consiglio su come devo agire...mi sto impantanando su una cosa assurda a mio avviso

Ultima modifica ad opera dell'utente iamwill il 24-06-2012 alle 19:45

Segnala ad un moderatore | IP: Collegato | Permalink

iamwill è offline Old Post 24-06-2012 19:42
Clicca qui per vedere il profilo dell'utente iamwill Clicca qui per inviare all'utente iamwill un messaggio privato Visualizza ulteriori messaggi scritti dall'utente iamwill Aggiungi l'utente iamwill alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
iamwill
Utente di HTML.it



Registrato il: Aug 2011

Provenienza:

Messaggi: 24


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da escocat
Bho non capisco.... la prima immagine la esplori e carichi i colori dei pixel in un array c(x, y). Da ogni elemento c (data una ascissa x e una ordinata y dell'immagine) estrai le tre componenti R(c), G(c), B(c) e li trasformi come vuoi per ottenere un colore c'(R', G', B') "trasformato" che metterai in un secondo array c'(x, y). Se vuoi puoi modificare l'immagine stessa sostituendo i suoi pixel con quelli nuovi oppure copiare i nuovi pixel in una seconda immagine.


esatto...chiedevo proprio questo... chiedevo un aiuto sul tipo di comandi da usare...come ho fatto sopra va bene?

Segnala ad un moderatore | IP: Collegato | Permalink

iamwill è offline Old Post 24-06-2012 19:54
Clicca qui per vedere il profilo dell'utente iamwill Clicca qui per inviare all'utente iamwill un messaggio privato Visualizza ulteriori messaggi scritti dall'utente iamwill Aggiungi l'utente iamwill alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Tutte le ore sono con fuso orario CET. Ora sono le 21:48.     

    Ultima discussione   Prossima discussione Invia una risposta
Versione per la stampa | Invia il thread via email | Ricevi aggiornamenti sul thread | Scarica il thread
 

Cerchi un argomento specifico e hai fretta? Usa il motore di ricerca