Seite 1 von 1

Warum funktioniert dieses Programm nicht?

Verfasst: Freitag 19. Februar 2021, 17:09
von pywald
Hallo,
Dieses Programm, das eigentlich das Bild als RGB-Farbwerte ausgeben sollte, funktioniert nicht. Warum?
Der Code:

Code: Alles auswählen

import glob, cv2
from numpy import*
from collections import Counter
pfad = "Onedrive\Dokumente\Bildanalyse"
jfif_dateien = glob.glob("**.jfif")
jpg_dateien = glob.glob("*.jpg")
jpeg_dateien = glob.glob("*.jpeg")
gif_dateien = glob.glob("*.gif")
dateien = jfif_dateien + jpg_dateien + gif_dateien
dateien = list(dateien)
for Bild in dateien:
	Bild = cv2.imread(Bild)
	RGB = []
	for element in Bild:
		RGB.append(element)
	c = {}
	for x in RGB:
		c[x] = RGB[x]
	print(c)
aber statt der Ausgabe bekomme ich nur eine Fehlermeldung:
TypeError: only integer scalar arrays can be converted to a scalar index
Was hat diese Fehlermeldung zu bedeuten?
pywald

Re: Warum funktioniert dieses Programm nicht?

Verfasst: Freitag 19. Februar 2021, 17:19
von rennmaus
Ich bin mir nicht sicher, aer ich glaube es sollte funktionieren, wenn due diese Zeile:

Code: Alles auswählen

for x in RGB:
		c[x] = RGB[x]
in diese änderst

Code: Alles auswählen

for x in RGB:
		c[x] = x
Die Iterierst ja schon über RGB und musst RGB dann ja nicht nochmal slicen...
EDIT:
Wenn du RGB slicen möchtest, müsstest du: for x in range(RGB) machen

Re: Warum funktioniert dieses Programm nicht?

Verfasst: Freitag 19. Februar 2021, 17:58
von pywald
Das hatte ich auch schon versucht aber darauf bekomme ich nur die Fehlermeldung:
TypeError: unhashable type: 'numpy.ndarray'

Re: Warum funktioniert dieses Programm nicht?

Verfasst: Freitag 19. Februar 2021, 18:19
von Sirius3
Eingerückt wird immer mit vier Leerzeichen pro Ebene. Keine Tabs. Variablennamen schreibt man komplett klein.
"dateien" ist schon eine Liste; das noch mal in eine Liste umzuwandeln ist unnötig.
Bild in eine Liste umzuwandeln geht einfacher:

Code: Alles auswählen

rgb = list(bild)
Ist aber eigentlich unnötig, da Du über bild auch gleich iterieren kannst.
Hast du schon einmal geschaut, was in x drin steht?
Was willst du eigentlich in c speichern?

Re: Warum funktioniert dieses Programm nicht?

Verfasst: Freitag 19. Februar 2021, 18:39
von rennmaus
Du meinst nicht zufällig soetwas in der art?

Code: Alles auswählen

for Bild in dateien:
	bild = cv2.imread(Bild)
	RGB = []
	c = {}
	cnt = 0
	for x in range(len(bild)):
		cnt += 1
		c[cnt] = bild[cnt-1]
	print(c)

Re: Warum funktioniert dieses Programm nicht?

Verfasst: Freitag 19. Februar 2021, 19:13
von Sirius3
@rennnaus: was soll denn das cnt? Du hast doch schon x. Und was soll ein Wörterbuch, wo die Schlüssel nur Indexe sind?

Re: Warum funktioniert dieses Programm nicht?

Verfasst: Samstag 20. Februar 2021, 10:25
von rennmaus
@pywald Wie sollte das Ergebnis ungefähr aussehen?
@Sirius, da war ich wohl ein bisschen voreilig