2016-09-15 3 views
0

Возникла проблема. У меня есть изображение tiff (у которого есть 4 слоя). Мои задачи - внести небольшие изменения в цвет пикселя, чтобы улучшить изображение. В этом случае я использую библиотеку GDAL. Мой источник:GDAL получить цвет пикселя

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? 
    } 
} 

Так что я не знаю, как получить цвет пикселя в цикле. Можете ли вы дать мне совет pleasae?

+1

Этот вопрос может быть лучше подходит для http://gis.stackexchange.com. – cartant

+0

добавлен, спасибо за консультацию. – lazexe

ответ

0

У меня нет примеров в API GDAL, но я сделал это в библиотеке python. Вы можете сделать аналогичную вещь, следуя аналогичной логике, получив значение изображения для массива и прокручивая его, применяя к нему некоторые условные изменения.

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