Numpy Spalten auslesen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Rems
User
Beiträge: 1
Registriert: Sonntag 17. Februar 2019, 17:49

Moin,
ich bin noch ein ziemlicher Neulig was Numpy betrifft, weswegen meine Frage vielleicht sehr simpel ist, aber ich bekomme mein Problem nicht gelöst.

Also meine Ziel ist es die Pixel eines Bildes (zu dem ich vorher einen Text hinzugefügt habe) in eine Matrix zu packen und dann möchte ich die Spalten dieser Matrix auslesen.
Dann möchte ich jeweils einige aufeinander folgende Werte der Spalten zusammenfügen, in dem ich einen Mittelwert bilde.
Leider gibt mir das Programm immer die Zeilen anstatt der Spalten aus und ich weiß nicht recht warum, außerdem scheint meine Matrix dreidimensional zu sein, was ich auch nicht so recht verstehe. Ich freue mich, wenn mir jemand helfen kann und falls ihr noch weitere Infos benötigt, dann fragt bitte.

Code: Alles auswählen

# import Image

from PIL import Image, ImageDraw, ImageFont
import numpy as np          #abkürzung
import matplotlib.pyplot as plt



#i = Image.open('images/dot.png')
#iar = np.asarray(i)         #Image Array
#print(iar)                  #gibt das Array aus

#plt.imshow(iar)
#plt.show()

img = Image.new('RGBA',(100, 50), color = 'black') #(mode, Größe, Farbe(geht auch mit RGB Werten) Hier müsste man dann die Anzahl der LEDs wählen???
fnt= ImageFont.truetype('C:\Windows\Fonts\Calibri.ttf',10) #Schriftart wählen
d = ImageDraw.Draw(img)

d.text((3,3), input("Bitte geben Sie den gewünschten Text ein: "), font=fnt, fill=(255,255,255,255)) #Position, Text, Schriftart, Farbe

img.save('images/pil_red.png')
plt.imshow(img)
plt.show()
ti = Image.open('images/pil_red.png')   #textImage
tiar = np.asarray(ti)                   #textimage Array
print(tiar)                             #ausgabe array Bildtext
print(tiar.shape)# gibt die höhe und breite des Arrays aus

#Falls die Matrix nich durch die Anzahl der LEDs teilbar ist, werden einfach bis zu 3 Zeilen gelöscht 
matrix = tiar.shape 
l=matrix[0]%4
if l>0:
    ledar=np.array(np.delete(tiar,np.s_[-l:],axis=0))       #löscht alle Zeilen der Matrix von -l bis zum Ende
else:
    ledar= np.array(tiar)

matrixled = ledar.shape
g= matrixled[0]/4

print('ledar',ledar)
print(ledar.shape)

bildar=np.zeros((36, matrixled[1]))     #array mit nur Nullen größe 36*Anzahl Pixel Breite des Bildes
print (ledar[:,0])
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

So ganz verstehe ich nicht, was Du machen willst. np.delete wird eigentlich nie benutzt, man nimmt Slicing statt dessen. Auch das Speichern und gleich wieder Laden ist komisch. Oder dass tiar nach ledar kopiert wird. Die ganzen Namen sind auch mehr verwirrend als hilfreich, aus welcher Sprache sind ti-Ar, le-Dar oder bil-Dar.
Die Arrays sind dreidimensional, weil neben Spalten und Zeilen auch Farben eine Dimension bilden.
Antworten