2010-07-04 12 views
1

Je passe par le code source pour le projet ci-dessus et je ne comprends pas les lignes de code suivantes quelqu'un peut-il m'expliquer s'il vous plaît? J'essaie d'obtenir le code pour travailler avec des images en couleur car il ne fonctionne actuellement qu'avec des images en niveaux de gris. J'ai les principales méthodes de travail mais les filtres ne sont appliqués qu'au quart supérieur des images renvoyées.Question de code source simple-iphone-image-traitement, qu'est-ce que cela fait

// Dans le fichier heeder.

inline uint8_t* operator[](const int rowIndex) { 
    return m_yptrs[rowIndex]; 
} 

// dans le fichier .mm

void Image::initYptrs() { 
m_yptrs=(uint8_t **) malloc(sizeof(uint8_t *)*m_height); 
for(int i=0; i<m_height; i++) { 
    m_yptrs[i]=m_imageData+i*m_width; 
    } 
} 

De ma compréhension, il semble que cela crée une référence aux pixels dans les images mais je ne comprends pas cette ligne de code.

m_yptrs[i]=m_imageData+i*m_width; 

Merci d'avance.

Répondre

4

Image::initYptrs() initialise un tableau de pointeurs au début de chaque ligne de l'image.

La ligne en question devrait probablement lire

m_yptrs[i] = m_imageData + i*BPP*m_width; 

Où BPP est octets par pixel (par exemple 3 pour RGB, 4 pour les images RGBA).

+0

Merci cela explique exactement ce que je devais savoir. J'ai maintenant le flou gaussien en couleur! Merci encore –

+0

Vous devez "accepter" la réponse – Frunsi