Farbwerte / Pixel eines Bildes auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
stanhech
User
Beiträge: 2
Registriert: Montag 11. Juni 2018, 13:52

Servus,

kleiner Frischling :-)

Folgendes Problem, ich würde gerne eine Linie über ein Bild (RGB) ziehen und im Bereich diese Linie die Farbwerte auslesen, so das ich danach diese Farbwerte auswerte und auf abfragen kann.

Es geht um eine einfache Farbcodeerkennung eines elektrischen Widerstandes.

Code: Alles auswählen


import cv2
from PIL import Image

x = 0

img = Image.open('C:/Users/user/Desktop/W.JPG')

"""
in dieserSchleife wird das Bild das 225*225 pixel groß ist durchlaufen
und von jedem Pixel der RGB-WERT in die [b]Liste [/b] gespeichert

3*225 = 675 WERTE da (R,G,B)
"""

while x < 225:
    
   #list = list.append(img.getpixel((x,92)))
   
   
    rgb_im = img.convert('RGB')
    
    r, g, b = rgb_im.getpixel((x,92))
    
    x = x + 1
    
    print(r,g,b)
   


jetz kann ich die werte in einzelne Variablen r,b,g speichern, jedoch nich in eine Liste, habe schon alles mögliche versucht auch mit tuple in liste convertieren usw.

jemand eine Idee???


PS: ach ja ich wollte eigentlich das Bild am Anfang noch auf eine Bestimmte Größe mit z.B.

Code: Alles auswählen

 img=cv2.resize(img,(256,256))
bringen, jedoch funktioniert das nicht im Zusammenhang mit Image.open kann das sein, wenn ja wie umgehe ich dieses ???


THX für eure TIPPS
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du solltest nicht die Bildbibliotheken mischen. Wenn du mit pil einliest ist erstmal nicht kompati zu opencv. Benutz lieber letzteres. Also cv2.imread.

Und dann ist dein ganzes Problem ein

line = image[y,xstart:xende]

und du hast eine Zeile.

Und statt while benutzt man for schleifen wenn man das zu Fuß macht. Und deine Liste machst du als Liste von Tupeln. Würde ich aber nicht tun.
stanhech
User
Beiträge: 2
Registriert: Montag 11. Juni 2018, 13:52

Das Problem das ich habe ist, das die Liste nie erweitert wird.

auch mit

Code: Alles auswählen

line = image[y,xstart:xende]
irgendwie muss ich doch in der schleife sagen das er den jeweiligen Iterationswert der liste hinzufügen soll.

Das ich am Schluss eine Liste mit allen Pixelwerten habe

wie würdest du es dann machen ?


THX
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Du brauchst da keine Schleife. Die Zeile sagt schon das Du in Zeile `y` alles von `xstart` (inkluive) bis `xende` (exclusive) als Numpy-Array an den Namen `line` binden möchtest.

Ansonsten müsstest Du mal konkreten Code zeigen und nicht einfach immer nur sagen der Code den wir nicht kennen funktioniert nicht. Da kann man dann nämlich nicht viel hilfreiches zu sagen. Nur das Du dann halt irgend etwas falsch machst. In dem Code den wir nicht kennen. ;-)
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten