Seite 1 von 1

Farbwerte / Pixel eines Bildes auslesen

Verfasst: Montag 11. Juni 2018, 14:04
von stanhech
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

Re: Farbwerte / Pixel eines Bildes auslesen

Verfasst: Montag 11. Juni 2018, 14:42
von __deets__
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.

Re: Farbwerte / Pixel eines Bildes auslesen

Verfasst: Montag 11. Juni 2018, 15:12
von stanhech
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

Re: Farbwerte / Pixel eines Bildes auslesen

Verfasst: Montag 11. Juni 2018, 16:11
von __blackjack__
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. ;-)