2016-05-19 3 views
0

Ich habe den folgenden Code, der Koordinaten der Ecken gibt. Es gibt jedoch nur die Koordinaten. Wie baut man eine Beziehung zwischen Werten auf?

import cv2 
import numpy as np 
import matplotlib.pyplot as plt 

filename = 'CornerDetectionImage.jpg' 
img = cv2.imread(filename) 
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

gray = np.float32(gray) 
dst = cv2.cornerHarris(gray, 2, 3, 0.04) 

# Threshold for an optimal value, it may vary depending on the image. 
img[dst>0.01*dst.max()] = [0, 0, 255] 
cv2.imwrite('output.jpg', img) 

coord = np.where(np.all(img == (0, 0, 255), axis=-1)) 

lol = zip(coord[0], coord[1]) 
print(lol) 
print ("") 

x = np.array(lol, dtype="int") 
print (x) 

filename1 = open("CoordinatesForCornerDetectionImage.txt", "w") 
filename1.write(str(lol)) 
filename1.close() 

filename2 = open("CoordinatesNpArray.txt", "w") 
filename2.write(str(x)) 
filename2.close() 

plt.scatter(coord[0], coord[1]) 
plt.show() 

Das Bild, das ich verwendet habe, befestigt unten ist,

CornerDetectionImage

Ich weiß nicht, ob Sie es sehen können oder nicht, werden die erfassten Ecken in rot gefärbt. DetectedCorners

Ich habe A-U die Reihenfolge der erkannten Ecken markiert. Unten ist das Ergebnis (Koordinaten).

[(27, 37), (27, 38), (27, 163), (27, 164), (27, 266), (27, 267), (27, 356), (27, 357), (27, 448), (27, 449), (27, 528), (27, 529), (28, 37), (28, 38), (28, 163), (28, 164), (28, 266), (28, 267), (28, 356), (28, 357), (28, 448), (28, 449), (28, 528), (28, 529), (51, 163), (51, 164), (51, 266), (51, 267), (51, 356), (51, 357), (51, 448), (51, 449), (52, 61), (52, 62), (52, 163), (52, 164), (52, 266), (52, 267), (52, 280), (52, 305), (52, 306), (52, 356), (52, 357), (52, 448), (52, 449), (52, 504), (52, 505), (53, 61), (53, 62), (53, 280), (53, 281), (53, 305), (53, 306), (53, 504), (53, 505), (355, 61), (355, 62), (355, 280), (355, 281), (355, 305), (355, 306), (355, 504), (355, 505), (356, 61), (356, 62), (356, 280), (356, 281), (356, 305), (356, 306), (356, 504), (356, 505), (380, 37), (380, 38), (380, 528), (380, 529), (381, 37), (381, 38), (381, 528), (381, 529)] 

Ich bin nicht in der Lage, die Beziehung mit diesen Koordinaten zu verstehen. Was ich wissen möchte, ist zu verstehen, dass ein Punkt mit seinen Koordinaten mit welcher anderen Koordinate verbunden ist.

Zum Beispiel

Wie wird A nach B und T verbunden ist? Wie ist B mit A und H verbunden? Wie ist C mit I und D verbunden?

Wie kann ich diese Beziehung aufbauen?

+0

überprüfen Sie diese https://www.python.org/doc/essays/graphs/ –

+0

@Ni. Der Link ist, wenn Sie die Beziehung mit Koordinaten haben. Aber ich muss wissen, wie man die Beziehung herstellt –

Antwort

1

Dies ist nur ein kurzer Vorschlag (keine definitive Antwort).

Sie könnten versuchen, über die Leitungen zwischen den detektierten Ecken mit OpenCV Iterieren LineIterator (http://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html#lineiterator) und prüfen, ob in der Nähe von jedem Pixel auf dieser Linie, die Sie beiden weißen und schwarze Pixel haben (ein kleines Fenster um jedes Pixel nehmen).

Dies könnte mit dem von Ihnen verwendeten Bild funktionieren, aber wahrscheinlich ist es zu naiv, an komplizierteren Bildern zu arbeiten.

Verwandte Themen