2016-09-15 2 views
0

A un problème. J'ai une image tiff (qui a 4 couches). Mes tâches consistent à faire de petits changements dans la couleur des pixels pour améliorer l'image. Dans ce cas, j'utilise la bibliothèque GDAL. Ma source est:GDAL obtenir la couleur de pixel

GDALDataset *poDataset; 
GDALAllRegister(); 
poDataset = (GDALDataset *) GDALOpen(fileName.toStdString().c_str(), GA_ReadOnly); 
if (poDataset == NULL) { 
    QMessageBox::information(0, "error", "We have problems"); 
} else { 
    QMessageBox::information(0, "Message", "All is ok"); 
} 
int rasterCount = poDataset->GetRasterCount(); // Here is 4 raster images 
GDALRasterBand *band = poDataset->GetRasterBand(1); 
int width = band->GetXSize(); 
int height = band->GetYSize(); 


for (int i = 0; i < width; i++) { 
    for (int j = 0; j < height; j++) { 
     // cross all pixels 
     // How to get pixel color here? 
    } 
} 

Donc je ne sais pas comment obtenir la couleur de pixel en cycle. Pouvez-vous me donner des conseils?

+1

Cette question pourrait être mieux adaptée à http://gis.stackexchange.com – cartant

+0

ajouté, merci pour des conseils. – lazexe

Répondre

0

Je n'ai pas d'exemple dans l'API GDAL mais je l'ai fait dans la bibliothèque python. Vous pouvez faire la même chose en suivant une logique similaire en obtenant la valeur de l'image pour le tableau et la boucler tout en y appliquant des changements conditionnels.

import numpy as np 
from osgeo import gdal 
ds = gdal.Open("test.tif") 
myarray = np.array(ds.GetRasterBand(1).ReadAsArray()) 
...