import
cv2 as cv
import
matplotlib.pyplot as plt
def
Flanned_Matcher(main_image,sub_image):
sift
=
cv.SIFT_create()
key_point1, descr1
=
sift.detectAndCompute(main_image,
None
)
key_point2, descr2
=
sift.detectAndCompute(sub_image,
None
)
FLANN_INDEX_KDTREE
=
0
index_params
=
dict
(algorithm
=
FLANN_INDEX_KDTREE, trees
=
5
)
search_params
=
dict
(checks
=
50
)
flann
=
cv.FlannBasedMatcher(index_params,search_params)
matches
=
flann.knnMatch(descr1,descr2,k
=
2
)
matchesMask
=
[[
0
,
0
]
for
i
in
range
(
len
(matches))]
for
i,(m,n)
in
enumerate
(matches):
if
( m.distance <
0.1
*
n.distance):
matchesMask[i]
=
[
1
,
0
]
draw_params
=
dict
(matchColor
=
(
0
,
255
,
0
),
singlePointColor
=
(
255
,
0
,
0
),
matchesMask
=
matchesMask,flags
=
0
)
img
=
cv.drawMatchesKnn(main_image,
key_point1,
sub_image,
key_point2,
matches,
None
,
*
*
draw_params)
return
img
main_image
=
cv.imread(
'geeks-full.png'
)
sub_image
=
cv.imread(
'geeks-half.jpg'
)
output
=
Flanned_Matcher(main_image,sub_image)
cv2.imwrite(
'Match.jpg'
, output)