finds.dev← search

// the find

rmislam/PythonSIFT

★ 1,020 · Python · MIT · updated Aug 2025

A clean and concise Python implementation of SIFT (Scale-Invariant Feature Transform)

A pure Python + NumPy implementation of the SIFT keypoint detection algorithm, intentionally written for readability rather than performance. It returns OpenCV-compatible KeyPoint objects and descriptors, so it can swap in anywhere you'd use cv2.SIFT_create(). The stated purpose is education — understanding what OpenCV is actually doing under the hood.

The OpenCV-compatible output is the right call: you can validate results against the reference implementation directly. The codebase is a single file (pysift.py), which means the full algorithm is readable in one sitting without jumping between modules. The linked two-part Medium tutorial walks through every function with plots, which is unusually thorough for a repo like this. Patent is expired, so there's no legal friction using this commercially.

Performance is genuinely bad — the README warns it takes 'a few minutes per image', which makes it unusable for anything beyond toy examples or offline study. Dependencies were last pinned at Python 3.8/NumPy 1.19/OpenCV 4.3 from 2020; no CI, so you're on your own verifying it still works on current versions. It's a single flat file with no tests, so if you modify anything you have no safety net. Zero community features beyond SIFT: no SURF, no ORB, no descriptor matching utilities — it's a point solution.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →