2016-05-19 1 views
0

私はコーナーの座標を与える次のコードを持っています。しかし、それは座標のみを与える。値間の関係を構築する方法は?

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() 

私が使用している画像は、以下に添付され、

CornerDetectionImage

私はあなたがそれを見ることができるかどうか知らない、検出されたコーナーは赤に着色されています。 DetectedCorners

私は、検出されたコーナーの順番をA-Uとマークしました。以下はその結果です(座標)。

[(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)] 

私はこれらの座標との関係を理解できません。私が知りたいのは、その座標を持つ点が他のどの座標と結びついているかを理解することです。

たとえば、

AはBとTにどのように接続されていますか? BはどのようにAとHに接続されていますか? CはどのようにIとDに接続されていますか?

どうすればこの関係を構築できますか?

+0

を確認してください。https://www.python.org/doc/essays/graphs/ –

+0

@Ni。リンクはあなたが座標との関係を持っているかどうかです。しかし、私は関係を作る方法を知る必要があります –

答えて

1

これはクイック提案です(決まった回答ではありません)。

OpenCV LineIteratorhttp://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html#lineiterator)で検出されたコーナー間の線を反復して試し、このラインのすべてのピクセルの近くに白と黒のピクセルがあることを確認できます。

これは、使用したイメージでは機能する可能性がありますが、より複雑なイメージで作業するのはあまりにも単純です。

関連する問題