Skip to main content

corrmatch-py

Python bindings for corrmatch - CPU-first template matching library.

Installation

From source (development)

# Install maturin
pip install maturin

# Build and install in development mode
cd corrmatch-py
maturin develop

# Or build a release wheel
maturin build --release
pip install target/wheels/corrmatch-*.whl

Usage

Quick one-shot matching

import numpy as np
import corrmatch

# Load your images as numpy arrays (2D uint8)
image = np.array(...)      # shape: (height, width)
template = np.array(...)   # shape: (height, width)

# Simple matching (translation only)
result = corrmatch.match_template(image, template)
print(f"Found at ({result.x}, {result.y}) with score {result.score}")

# With rotation
result = corrmatch.match_template(image, template, rotation="enabled")
print(f"Found at ({result.x}, {result.y}), angle={result.angle_deg}deg, score={result.score}")

Efficient repeated matching

For matching the same template against multiple images:

import corrmatch

# Create and compile template once
tpl = corrmatch.Template(template_array)
compiled = tpl.compile()  # With rotation support
# Or: compiled = tpl.compile_no_rotation()  # Faster, no rotation

# Create matcher
matcher = compiled.matcher()

# Match against multiple images
for image in images:
    result = matcher.match_image(image)
    # Or: results = matcher.match_topk(image, k=5)  # Top 5 matches

Configuration

# Compile config (rotation parameters)
compile_cfg = corrmatch.CompileConfig(
    max_levels=6,           # Pyramid levels
    coarse_step_deg=10.0,   # Initial angle step
    min_step_deg=0.5,       # Finest angle step
    fill_value=0,           # Fill for rotated edges
)
compiled = tpl.compile(compile_cfg)

# Match config
match_cfg = corrmatch.MatchConfig(
    metric="zncc",          # "zncc" or "ssd"
    rotation="enabled",     # "enabled" or "disabled"
    parallel=True,          # Use rayon parallelism
    beam_width=8,           # Candidates per level
    nms_radius=6,           # Non-maximum suppression radius
)
matcher = compiled.matcher(match_cfg)

Loading from files

# Load template from image file
tpl = corrmatch.Template.from_file("template.png")

Visualization (matplotlib)

CorrMatch includes a small visualization helper to inspect results in an interactive matplotlib window (rotated detection frame + template + matched patch + deskew + diff).

Install extra dependencies:

pip install -e ".[viz]"

Run from Python:

import corrmatch
import corrmatch.viz as viz

match_cfg = corrmatch.MatchConfig(rotation="enabled", metric="zncc")
fig, matches = viz.match_and_show(image, template, topk=5, match_cfg=match_cfg)

Or as a CLI:

corrmatch-viz --image image.png --template template.png --rotation enabled --topk 5

Angle convention: positive angles are clockwise (x right, y down).

API Reference

Classes

  • Template: Grayscale template image
  • CompiledTemplate: Pre-compiled template with pyramids
  • Matcher: Template matcher for coarse-to-fine search
  • Match: Match result with x, y, angle_deg, score
  • CompileConfig: Template compilation settings
  • MatchConfig: Matching parameters

Functions

  • match_template(image, template, ...): One-shot matching

Building

Requires:

  • Rust toolchain (1.88+)
  • Python 3.11+
  • maturin (pip install maturin)
cd corrmatch-py
PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 maturin develop

Download files

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

Source Distribution

corrmatch-0.2.4.tar.gz (88.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

corrmatch-0.2.4-cp310-abi3-win_amd64.whl (581.3 kB view details)

Uploaded CPython 3.10+Windows x86-64

corrmatch-0.2.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (805.3 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

corrmatch-0.2.4-cp310-abi3-macosx_11_0_arm64.whl (706.7 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file corrmatch-0.2.4.tar.gz.

File metadata

  • Download URL: corrmatch-0.2.4.tar.gz
  • Upload date:
  • Size: 88.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for corrmatch-0.2.4.tar.gz
Algorithm Hash digest
SHA256 1f670ff5c2dd2f20548c84bf0de4f758ece20641a2bb6a6b8f1471b7251528eb
MD5 6e7d524dd4a01171e9cd05991aea8b1e
BLAKE2b-256 97e54fd84b821cbcf29475bec3d4fb1029d35f0e45241d9b34de596de4885f9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for corrmatch-0.2.4.tar.gz:

Publisher: release-pypi.yml on VitalyVorobyev/corrmatch-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file corrmatch-0.2.4-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: corrmatch-0.2.4-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 581.3 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for corrmatch-0.2.4-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 db1f8619bdccccbc0dee4165b72ed8f4f3004315f78510131c7e828817bf8480
MD5 800575e88523a08b6100e309d27d121d
BLAKE2b-256 e1a64c2de387fe25c0cc3f998e683777a323ac4baaaba9755607d4740ba778a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for corrmatch-0.2.4-cp310-abi3-win_amd64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/corrmatch-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file corrmatch-0.2.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for corrmatch-0.2.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c49558eccef8dba4db8d19290d5ba7d6bd16cca402ef22ff39597f245e333492
MD5 dc3c8849fa7700d8f54d52a2863d1141
BLAKE2b-256 fc96f5725d7070ca0823f9247610133a6f0ebb52dec28215c10d8b27e9085ec7

See more details on using hashes here.

Provenance

The following attestation bundles were made for corrmatch-0.2.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/corrmatch-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file corrmatch-0.2.4-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for corrmatch-0.2.4-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ae6428e73828fcddea65cfbd48f271a3f4f8cb432c4fbd34e2d83653e980d7f
MD5 cfddbf532eb64814998566be5c7cade6
BLAKE2b-256 482eb09f0add8e3f8d9a62be175b0d2b88289e90934b72ecffe02c7858614065

See more details on using hashes here.

Provenance

The following attestation bundles were made for corrmatch-0.2.4-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/corrmatch-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.5

4 files

This release

0.2.4 This release

4 files

0.2.3

4 files

0.2.1

4 files

0.2.0

4 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page