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.3.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.3-cp310-abi3-win_amd64.whl (581.2 kB view details)

Uploaded CPython 3.10+Windows x86-64

corrmatch-0.2.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (805.2 kB view details)

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

corrmatch-0.2.3-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.3.tar.gz.

File metadata

  • Download URL: corrmatch-0.2.3.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.3.tar.gz
Algorithm Hash digest
SHA256 32f561d72ae1cf5975db71a00e7072229f9233a54e2f8619021f52552213ea70
MD5 6b02344b0131b3c17be3fddb2a14ea20
BLAKE2b-256 dfc7a7f2a9458677e61e757c11862ca290027939f2f00eb4c971b48466735b27

See more details on using hashes here.

Provenance

The following attestation bundles were made for corrmatch-0.2.3.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.3-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: corrmatch-0.2.3-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 581.2 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.3-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2f8ecfcc13777a0014a897b97251c28d65babe55b03d9c06dd35fcc85de303cb
MD5 001d44f2cd91433730d751980b2960f4
BLAKE2b-256 efa4d6e83b46844f8611bb25192c855dbf9eab75eddbe3518747573981aa68c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for corrmatch-0.2.3-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.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for corrmatch-0.2.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a90dcf2355483a3429612af51f61351e324a829cf7ec4b8c90b3b1e96bf31518
MD5 c6e3230b45c7ee71de1bba9f3fd76c70
BLAKE2b-256 1326ed869c8d17b15ce496be6816f69c94c33b3ff6b9046d5075f5706a5dc48f

See more details on using hashes here.

Provenance

The following attestation bundles were made for corrmatch-0.2.3-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.3-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for corrmatch-0.2.3-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 90dc2a44e1df3b3435e490e33069855175cb9b8cebe1045e717f26fa14f2ca2d
MD5 d5afa1e4f9ace1ed79498393abd6e95c
BLAKE2b-256 1297a0ad34eafabb4881f1f6cee8709611ed3be5e12fc3a4bb55b5a96bb86baa

See more details on using hashes here.

Provenance

The following attestation bundles were made for corrmatch-0.2.3-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

0.2.4

4 files

This release

0.2.3 This release

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