Code Monkey home page Code Monkey logo

stitching's Introduction

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.

inputs

result

Installation

use the docker image

or pip to install stitching from PyPI.

pip install stitching

Usage

Python CLI

The command line interface (cli) is available after installation

stitch -h show the help

stitch * stitches all 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 * -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 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. The preview is here.

You can e.g. visualize the RANSAC matches between the images or the seam lines where the images are blended:

matches1 matches2 seams1 seams2

Literature

This package was developed and used for our paper Automatic stitching of fragmented construction plans of hydraulic structures

License

Apache License 2.0

stitching's People

Contributors

lukasalexanderweber avatar pre-commit-ci[bot] avatar chinery avatar ahonnecke avatar sadikkuzu avatar algopert avatar kinow avatar kalo0m avatar kianmeng avatar 3nol avatar hoogenm avatar kacecm avatar junxiant avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.