Biz özellikleri sırasıyla birinci ve ikinci görüntü için maçları nerede olduğunuzu keypoints kp1
ve kp2
saklanır biliyoruz. cv2.ORB
perspektifinde, her satırın ilk görüntüde, kp1
ve ikinci görüntüde (kp2
) algılanan bir anahtar noktası olduğu 2B matrisleridir. - endeksi veya satır
queryIdx
: Senin durumunda Eğer cv2.BFMatch
kullandığından matches
onları iki önemli üyeleridir arasında .... her nesnenin birçok üyelerini içeren cv2.DMatch
nesnelerin listesini döndürür maçları indeksi veya kp2
faiz noktası matrisinin sıranın- trainIdx
maçları kp1
faiz noktası matris
Dolayısıyla queryIdx
ve trainIdx
kp1
ve kp2
arasındaki maçı hangi özellikleri ORB söyleyecektir. Bu nedenle, bunları kp1
ve kp2
dizinlerine eklemek için kullanır ve eşleşmelerin gerçek mekansal koordinatlarını belirleyen (x,y)
koordinatları olan pt
üyesini edinin.
Eğer matches
her cv2.DMatch
nesne yineleyemezsiniz yapmanız gereken
, hem
kp1
ve
kp2
için koordinatların listesini eklenecek ve bitirdiniz. Böyle
şey: Sadece list_kp1.append(kp1[img1_idx].pt)
yapılır ve list_kp2
için aynı ama mekansal koordinatları nasıl yorumlanacağı üzerinde çok net yapmak istediğini olabilirdi
# Initialize lists
list_kp1 = []
list_kp2 = []
# For each match...
for mat in matches:
# Get the matching keypoints for each of the images
img1_idx = mat.queryIdx
img2_idx = mat.trainIdx
# x - columns
# y - rows
# Get the coordinates
(x1,y1) = kp1[img1_idx].pt
(x2,y2) = kp2[img2_idx].pt
# Append to each list
list_kp1.append((x1, y1))
list_kp2.append((x2, y2))
Not. Ayrıca bir adım daha ileri gidip bir liste anlama yapabilirdi:
list_kp1 = [kp1[mat.queryIdx].pt for mat in matches]
list_kp2 = [kp2[mat.trainIdx].pt for mat in matches]
list_kp1
list_kp2
karşılık gelen pozisyon ile eşleşen bir özellik noktasının uzamsal koordinatlarını içerecektir. Başka bir deyişle, öğesininöğesinin uzaysal koordinatları,'daki ilgili özellik noktası ile eşleşerek, uzamsal koordinatları öğesi i
öğesinde bulunmaktadır. Çünkü OpenCV 2.4.x için drawMatches
için geçici bir çözüm yazdığında
küçük not olarak, ben bu kavramı kullanılır, C++ işlevine Python sarıcı yok, bu yüzden yukarıdaki kavram kullandı Kendi imzamı yazmak için iki görüntü arasındaki eşleşen özelliklerin mekansal koordinatlarını bulmak.
İsterseniz kontrol edin!
module' object has no attribute 'drawMatches' opencv python
Bundan Çok Daha Fazlası! – kotopanda