Я стараюсь весь день комбинировать три ndarrays с одним jpeg-изображением. Я извлекаю три полосы, используя библиотеку gdal. Экспортированные значения в массиве выглядят следующим образом:Объединить массивы с растром (jpeg)
[[ 6355. 6586. 6646. ..., 704. 671. 725.]
[ 5853. 6031. 6107. ..., 782. 813. 897.]
[ 4632. 4748. 4305. ..., 837. 869. 802.]
...,
[ 1032. 1090. 1018. ..., 1500. 1441. 1387.]
[ 958. 980. 913. ..., 1522. 1455. 1391.]
[ 883. 932. 966. ..., 1489. 1369. 1378.]]
Это одна извлеченная полоса из файла pix. У меня три группы. Здесь я пытаюсь объединить эти группы:
rgbArray = np.zeros((rows,cols,3), dtype=np.uint8)
band1 = dataset.GetRasterBand(closest_channel(dict_channel, 640)-1)
band2 = dataset.GetRasterBand(closest_channel(dict_channel, 550)-1)
band3 = dataset.GetRasterBand(closest_channel(dict_channel, 460)-1)
data1 = band1.ReadAsArray (0, 0, cols, rows).astype(np.float)
data2 = band2.ReadAsArray (0, 0, cols, rows).astype(np.float)
data3 = band3.ReadAsArray (0, 0, cols, rows).astype(np.float)
rgbArray[..., 0] = data1
rgbArray[..., 1] = data2
rgbArray[..., 2] = data3
img = Image.fromarray(rgbArray, 'RGB')
и картина выглядит следующим образом:
Конечно это не хороший результат. Это должно быть изображение, взятое с самолета на земле, где должно быть поле.
Я буду очень рад любой, любая помощь Большое спасибо
'data1',' data2' и 'data3' являются массивами с плавающей запятой, но' rgbArray' является 'uint8'. Вы должны преобразовать массивы с плавающей запятой в диапазон (0, 255), прежде чем назначать их в 'rbgArray'. –
Большое спасибо, то же самое, что и memoselyk. Спасибо за помощь. – Bulva