init
This commit is contained in:
75
finder.py
Normal file
75
finder.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import cv2
|
||||
from matplotlib import pyplot as plt
|
||||
from numpy import floor
|
||||
|
||||
method = cv2.TM_SQDIFF_NORMED
|
||||
|
||||
# Read the images from the file
|
||||
energy_image = cv2.imread('glyphs-a-energy.png', cv2.IMREAD_GRAYSCALE)
|
||||
large_image = cv2.imread('radofdispear.png', cv2.IMREAD_GRAYSCALE)
|
||||
|
||||
orb = cv2.ORB_create()
|
||||
|
||||
# screenshot = cv2.resize(large_image, down_points, interpolation= cv2.INTER_LINEAR)
|
||||
|
||||
|
||||
for i in range(64):
|
||||
mod8 = i % 8
|
||||
|
||||
x1 = (int(floor(i / 8))) * 256
|
||||
y1 = (int(mod8)) * 192
|
||||
|
||||
x2 = x1 + 256
|
||||
y2 = y1 + 192
|
||||
|
||||
# print(x1, y1, x2, y2)
|
||||
small_image = energy_image[y1:y2, x1:x2]
|
||||
# print(small_image)
|
||||
plt.imshow(small_image)
|
||||
plt.show()
|
||||
|
||||
kp1, des1 = orb.detectAndCompute(small_image, None)
|
||||
kp2, des2 = orb.detectAndCompute(large_image, None)
|
||||
|
||||
img1 = small_image
|
||||
img2 = large_image
|
||||
|
||||
# result = cv2.matchTemplate(small_image, large_image, method)
|
||||
|
||||
# print(result)
|
||||
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
|
||||
# Match descriptors.
|
||||
matches = bf.match(des1, des2)
|
||||
# Sort them in the order of their distance.
|
||||
matches = sorted(matches, key=lambda x: x.distance)
|
||||
# Draw first 10 matches.
|
||||
img3 = cv2.drawMatches(img1, kp1, img2, kp2, matches[:10], None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)
|
||||
|
||||
img3 = cv2.resize(img3, dsize=(int(3840 / 2), int(2180 / 2)))
|
||||
|
||||
cv2.imshow('output', img3)
|
||||
cv2.waitKey(0)
|
||||
break
|
||||
# break
|
||||
# # We want the minimum squared difference
|
||||
# mn, _, mnLoc, _ = cv2.minMaxLoc(result)
|
||||
# #
|
||||
# # Draw the rectangle:
|
||||
# # Extract the coordinates of our best match
|
||||
# MPx, MPy = mnLoc
|
||||
#
|
||||
# print(MPx, MPy)
|
||||
# #
|
||||
# # # Step 2: Get the size of the template. This is the same size as the match.
|
||||
# # trows, tcols = small_image.shape[:2]
|
||||
# #
|
||||
# # # Step 3: Draw the rectangle on large_image
|
||||
# # cv2.rectangle(large_image, (MPx, MPy), (MPx + tcols, MPy + trows), (0, 0, 255), 2)
|
||||
# cv2.imshow('output', small_image)
|
||||
# cv2.waitKey(0)
|
||||
# break
|
||||
# # Display the original image with the rectangle around the match.
|
||||
# cv2.imshow('output', large_image)
|
||||
#
|
||||
# # The image is only displayed if we call this
|
||||
#
|
||||
Reference in New Issue
Block a user