SIFT Application in OpenCV

Kategori: Computer Vision , 20 Şubat 2020 , JanFranco


Bir önceki yazımızda Scale Invariant Feature Transform yani SIFT algoritmasını gördük, algoritmanın detayına indik, adımlarını anladık. Bu yazımızda Python üzerinde OpenCV kütüphanesi ile bir örnek yapacağız. Kütüphaneyi ve resmi alalım:


import cv2

img = cv2.imread('../data/pisa.jpg')
copyImg = img.copy()
richImg = img.copy()
cv2.imshow('IMG', img)
cv2.waitKey(0)
>>

sift in opencv

Burada resmin iki kopyasını aldık. Belirlediğimiz keypointleri bu resimlerin üzerine yazacağız. Resmi grayscale hale getirelim:


gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
SIFT algoritmasını kullanabilmek için cv2.xfeatures2d.SIFT_create() sınıfından bir obje üretelim ve sınıfın detect methodunu kullanalım:


sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray, None)
Keypointleri elde ettik ve kp değişkeninde sakladık. cv2.drawPoints() methodu ile bu keypointleri görebiliriz:


cv2.drawKeypoints(gray, kp, outImage=copyImg)
cv2.imshow('SIFT without Flag', copyImg)
cv2.waitKey(0)
>>

sift in opencv

Keypointleri görüyoruz. Büyüklüklerini ve orientationlarını yani yönlerini de görebilmemiz mümkün. Bunun için aynı methodun flags parametresine cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS komutunu veriyoruz:


cv2.drawKeypoints(gray, kp, outImage=richImg, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow('SIFT with Flag', richImg)
cv2.waitKey(0)
>>

sift in opencv


Sonraki Yazı: SURF - Speeded-up Robust Features
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın