Skip to main content

No project description provided

Project description

Build Status

📝 simple library to make life easy when deploying superpoint, superglue models


:gear: Installation


pip install superpoint_superglue_deployment

:tada: TODO


  • interface to deploy superpoint, superglue
  • testing on real data

:running: How to Run


Basic usage

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()

matched image sample

match_two_images --query_path [path/to/query/image] --ref_path [path/to/reference/image] --use_gpu

🎛 Development environment


mamba env create --file environment.yml
mamba activate superpoint_superglue_deployment

:gem: References


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

superpoint_superglue_deployment-0.0.3.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file superpoint_superglue_deployment-0.0.3.tar.gz.

File metadata

File hashes

Hashes for superpoint_superglue_deployment-0.0.3.tar.gz
Algorithm Hash digest
SHA256 6010b82194bba7a0701b73899842d1662db77526ad407f2daf376896ae9ba369
MD5 45a093e98a86b53b90cf117a636588f5
BLAKE2b-256 e8e6f8a7dddc6188d18c14c90dcee306558d7670cbc38739522e8e844297f845

See more details on using hashes here.

File details

Details for the file superpoint_superglue_deployment-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for superpoint_superglue_deployment-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aecef08b6374cbe270ed40adb77db9e4b9efe517b74483bc53cb782600b569d2
MD5 24ef6e97266ba7e708d4a10e31a2be95
BLAKE2b-256 0ca4c6b844c2ab211de96cb765b30eaff2f100e0e01e0e4f0bf62fb2206a18c4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page