zbc 0be4b5a819 -update: version beta1.0 | 4 months ago | |
---|---|---|
.github | 1 year ago | |
data | 4 months ago | |
docs | 1 year ago | |
notebooks | 1 year ago | |
scripts | 1 year ago | |
superpoint_superglue_deployment | 4 months ago | |
tests | 1 year ago | |
.flake8 | 1 year ago | |
.gitignore | 1 year ago | |
.pre-commit-config.yaml | 1 year ago | |
MANIFEST.in | 1 year ago | |
README.md | 1 year ago | |
count_env.py | 4 months ago | |
demo.py | 4 months ago | |
demo_env.py | 4 months ago | |
environment.yml | 1 year ago | |
generate_test_images.py | 4 months ago | |
image-stitching.py | 4 months ago | |
image_match_demo.py | 4 months ago | |
image_similarity_count.py | 4 months ago | |
params.yml | 4 months ago | |
pyproject.toml | 1 year ago | |
read.py | 4 months ago | |
requirements-dev.txt | 1 year ago | |
requirements.txt | 1 year ago | |
rorate_image_detection.py | 4 months ago | |
setup.cfg | 1 year ago | |
setup.py | 4 months ago | |
small_image_match.py | 4 months ago | |
test.py | 4 months ago |
pip install superpoint_superglue_deployment
import cv2
import numpy as np
from loguru import logger
from superpoint_superglue_deployment import Matcher
def main():
query_image = cv2.imread("./data/images/one_pillar_pagoda_1.jpg")
ref_image = cv2.imread("./data/images/one_pillar_pagoda_2.jpg")
query_gray = cv2.imread("./data/images/one_pillar_pagoda_1.jpg", 0)
ref_gray = cv2.imread("./data/images/one_pillar_pagoda_2.jpg", 0)
superglue_matcher = Matcher(
{
"superpoint": {
"input_shape": (-1, -1),
"keypoint_threshold": 0.003,
},
"superglue": {
"match_threshold": 0.5,
},
"use_gpu": True,
}
)
query_kpts, ref_kpts, _, _, matches = superglue_matcher.match(query_gray, ref_gray)
M, mask = cv2.findHomography(
np.float64([query_kpts[m.queryIdx].pt for m in matches]).reshape(-1, 1, 2),
np.float64([ref_kpts[m.trainIdx].pt for m in matches]).reshape(-1, 1, 2),
method=cv2.USAC_MAGSAC,
ransacReprojThreshold=5.0,
maxIters=10000,
confidence=0.95,
)
logger.info(f"number of inliers: {mask.sum()}")
matches = np.array(matches)[np.all(mask > 0, axis=1)]
matches = sorted(matches, key=lambda match: match.distance)
matched_image = cv2.drawMatches(
query_image,
query_kpts,
ref_image,
ref_kpts,
matches[:50],
None,
flags=2,
)
cv2.imwrite("matched_image.jpg", matched_image)
if __name__ == "__main__":
main()
Command line to test matching two images after installing the library
match_two_images --query_path [path/to/query/image] --ref_path [path/to/reference/image] --use_gpu
mamba env create --file environment.yml
mamba activate superpoint_superglue_deployment