2017-11-20 3 views
-2

Also habe ich verschiedene Bilder und ich muss auf dem Bild laufen und finde das erste größte Quadrat auf dem Bild durch die Farbe, die in der Funktion als variabel angegeben ist . (Das heißt, wenn es beispielsweise 2 Quadrate mit der gleichen Anzahl an Pixeln gibt, ist das erste Quadrat das gewählte)So finden Sie den ersten großen Platz im Bild (Ohne externe Bibliotheken)

Es ist eine Mission, die ich tun muss, aber ich stecke fest und weiß nicht, wie ich hinkriege das Ergebnis :(

wir die Funktion Last von der Datei immagini mit

filename = der Bildname

c = der Code RGB

mein Code:..

from immagini import * 

def quadrato(filename,c): 
#Get image from the user (load image)  
img = load(filename) 

#print(img[y][x][r,g,b]) 
#Loop trough the image 
#Get the width and height of the image 

counter = [] 

for y in range(0, len(img[:])): 
    for x in range(0, len(img[y][:])): 
     #Scan for the R #Scan for the G #Scan for the B 
     #If detecs all RGB are the same from the input 
     if img[y][x][0] == c[0] and img[y][x][1] == c[1] and img[y][x][2] == c[2]: 
      counter.append((x,y)) 
print (((len(counter)), (x ,y),img[y][x])) 

Also mein Code druckt, wie viele Pixel mit der gewünschten Farbe, die Position des Pixels und seine Farbe.

zum Beispiel (die Anzahl der Pixel des sqaure, (x, y) Standort)

The input ('Img1.png',(255,0,0)) , The output must be (30, (60, 50))

The input ('Img2.png',(0,0,255)) , The output must be (201,(54,240))

Danke Jungs, ich hoffe, dass Sie mich verstehen, dann ist es ein wenig schwer für mich zu erklären, Wenn es ein Problem in der Post ist, sagen Sie mir :)

+0

Was ist das erste Quadrat? Sie müssen das definieren ... – Piglet

+0

Das erste Quadrat meine ich mit der Aussage, dass es zum Beispiel 2 Quadrate mit der gleichen Anzahl an Pixeln (die gleiche Farbe) gibt: Schauen Sie das Bild an: [link] (https://i.stack.imgur.com/K5F7f.png) der Eingang ('Ist1.png', (255,0,0)) der Ausgang (20, (30, 20)) Das Quadrat hat 20 Pixel und wurde gegründet am Standort 30,20 Vielen Dank. – Kukuriku

+0

Wenn Sie zwei gleich große Quadrate haben, welches ist das erste? Es gibt keine Reihenfolge, es sei denn, Sie definieren eine ... Wenn Sie solche Definitionen nicht finden können, können Sie keine Algorithmen entwickeln, um Dinge zu finden. Also hol Stift und Papier und fang an zu denken – Piglet

Antwort

0

Sie sollten nicht an einzelne Pixel denken, sondern von horizontalen Linien zuerst.

Für jede y eine Liste der verbundenen Linien erstellen. Wenn Sie ein Pixel in der gesuchten Farbe finden und das Pixel auf der linken Seite dieselbe Farbe hat, fügen Sie das gefundene Pixel zur letzten Zeile hinzu.

Dann gehen Sie y durch, um angrenzende Linien desselben Anfangs und Endes zu finden, um Rechtecke daraus zu bauen.

Verwandte Themen