Bildfarbenerkennung mit Python

Nach dem Herunterladen eines Bildes von der Website muss ich die Farbe des heruntergeladenen Bildes erkennen. Ich habe das Bild erfolgreich heruntergeladen, aber ich muss die Farbe des entsprechenden Bildes erkennen und es im Namen der entsprechenden Farbe speichern. Der verwendete Code ist Unten gegeben.Schreiben Sie mir, wie kann ich es aus der aktuellen Position zu erreichen.

imageurl='http://www.example.com/' opener1 = urllib2.build_opener() page1=opener1.open(imageurl) my_picture=page1.read() fout = open('images/tony'+image[s], "wb") fout.write(my_picture) fout.close() 

5 Solutions collect form web for “Bildfarbenerkennung mit Python”

Verwenden Sie ein PIL (Python Image Library) Histogramm. Schleife über das Histogramm und nimm den Durchschnitt der Pixel-Farbe, die durch die Pixelanzahl gewogen wird.

Wie von anderen erwähnt, ist PIL die richtige Bibliothek. Hier ist eine Funktion, die ein Bild öffnet und die Hauptfarbe sucht.

 def get_main_color(file): img = Image.open(file) colors = img.getcolors(256) #put a higher value if there are many colors in your image max_occurence, most_present = 0, 0 try: for c in colors: if c[0] > max_occurence: (max_occurence, most_present) = c return most_present except TypeError: raise Exception("Too many colors in the image") 

Ich hoffe, es hilft

Update: 256 zu getcolors passieren ist ok für sehr kleine Bilder, kann aber in den meisten Fällen nicht funktionieren. Dieser Wert muss für größere Bilder erhöht werden. Zum Beispiel 1024 * 1024 ist für 400 Pixel * 300 Pixel Bild ok.

Sie sollten PILs Parser aus der ImageFile-Klasse verwenden, um die Datei aus der URL zu lesen. Dann ist das Leben ziemlich einfach, weil du gesagt hast, dass das ganze Bild die gleiche Farbe ist. Hier ist ein Code, der auf deinem Code aufbaut:

 import urllib2 import ImageFile image_url = "http://plainview.files.wordpress.com/2009/06/black.jpg" opener1 = urllib2.build_opener() page1=opener1.open(image_url) p = ImageFile.Parser() while 1: s = page1.read(1024) if not s: break p.feed(s) im = p.close() r,g,b = im.getpixel((0,0)) fout = open('images/tony'+image[s]+"%d%_d%_d"%(r,g,b), "wb") fout.write(my_picture) fout.close() 

Dies sollte die rot-grünen und blauen Werte der Farbe des ersten Bildpunktes an das Ende des Bildnamens anhängen. Ich habe alles bis zum Schlusspfad getestet.

Sie können das Bildmodul der PIL-Bibliothek dazu nutzen. Siehe: http://effbot.org/imagingbook/image.htm .

Sie könnten K-Mittel-Algorithmus verwenden, um die K Hauptfarben des Bildes zu erhalten. Hier ist ein Beispiel dafür, wie es geht: K-bedeutet mit OpenCV (Python)

Python ist die beste Programmiersprache der Welt.