stitching
A Python package for fast and robust Image Stitching.
Based on opencv's stitching module and inspired by the stitching_detailed.py python command line tool.
Installation
use the docker image
or pip to install stitching from
PyPI.
pip install stitching
for server (headless) environments (such as Docker, cloud environments etc.)
use stitching-headless
pip install stitching-headless
Usage
Python CLI
The command line interface (cli) is available after installation
stitch -h show the help
stitch *.jpg stitches all jpg files in the current directory
stitch img_dir/IMG*.jpg stitches all files in the img_dir directory
starting with "IMG" and ending with ".jpg"
stitch img1.jpg img2.jpg img3.jpg
stitches the 3 explicit files of the current directory
Enable verbose mode with stitch *.jpg -v.
This will create a folder where all intermediate results are stored so that
you can find out where there are problems with your images, if any
Docker CLI
If you are familiar with Docker and don't feel like setting up Python and an environment, you can also use the openstitching/stitch Docker image
docker container run --rm -v /path/to/data:/data openstitching/stitch:{version} -h
You can use the Python CLI as described above (read "current directory" as "/data directory").
Python Script
You can also use the Stitcher class in your script
from stitching import Stitcher
stitcher = Stitcher()
Specify your custom settings as
stitcher = Stitcher(detector="sift", confidence_threshold=0.2)
or
settings = {"detector": "sift", "confidence_threshold": 0.2}
stitcher = Stitcher(**settings)
Create a Panorama from your Images:
- from a list of filenames
panorama = stitcher.stitch(["img1.jpg", "img2.jpg", "img3.jpg"])
- from a single item list with a wildcard
panorama = stitcher.stitch(["img?.jpg"])
- from a list of already loaded images
panorama = stitcher.stitch([cv.imread("img1.jpg"), cv.imread("img2.jpg")])
The equivalent of the --affine cli parameter within the script is
from stitching import AffineStitcher
stitcher = AffineStitcher()
panorama = stitcher.stitch(...)
The equivalent of the -v/--verbose cli parameter within the script is
panorama = stitcher.stitch_verbose(...)
Questions
For questions please use our discussions. Please do not use our issue section for questions.
Contribute
Read through how to contribute for information on topics like finding and fixing bugs and improving / maintaining this package.
Tutorial
This package provides utility functions to deeply analyse what's happening behind the stitching. A tutorial was created as Jupyter Notebook and has a rendered preview.
You can e.g. visualize the RANSAC matches between the images or the seam lines where the images are blended:
Literature
This package was developed and used for our paper Automatic stitching of fragmented construction plans of hydraulic structures
License
Metadata
Release files for stitching 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| stitching-0.7.0.tar.gz | 30.8 kB | Without provenance | Details for stitching-0.7.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| stitching-0.7.0-py3-none-any.whl | Python 3 | none | any | Details for stitching-0.7.0-py3-none-any.whl |
Total release size: 61.1 kB
Release files / stitching-0.7.0.tar.gz
| Download URL | stitching-0.7.0.tar.gz |
|---|---|
| Size | 30.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11f0e50abe3ab9655b5ca72386a307ac131142b3bedb88d83bee554a88236fb6
|
|
BLAKE2b-256 checksum How to use checksums |
c2d1f7f7821e45f280aeb26b715f4684ddd5eed934875fdbf00b18901aa47bab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / stitching-0.7.0-py3-none-any.whl
| Download URL | stitching-0.7.0-py3-none-any.whl |
|---|---|
| Size | 30.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
71b4dbbf90365298c129d59f65a6607726130f0c3e8657fc883f7045f6b583d7
|
|
BLAKE2b-256 checksum How to use checksums |
b13f0350ac5d45972d71c6f8b41fa902ce06d9d9cd4e7a06651f482f26578e55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for stitching 0.7.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.