{"id":15030984,"url":"https://github.com/openstitching/stitching","last_synced_at":"2025-05-14T05:00:26.605Z","repository":{"id":37026420,"uuid":"489887699","full_name":"OpenStitching/stitching","owner":"OpenStitching","description":"A Python package for fast and robust Image Stitching","archived":false,"fork":false,"pushed_at":"2025-03-31T19:51:28.000Z","size":141,"stargazers_count":2306,"open_issues_count":10,"forks_count":184,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-05-11T00:17:26.410Z","etag":null,"topics":["computer-vision","image-stitching","opencv-python","panorama","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenStitching.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":"openstitching","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-05-08T08:30:48.000Z","updated_at":"2025-05-08T17:55:44.000Z","dependencies_parsed_at":"2024-03-25T12:08:31.999Z","dependency_job_id":"ada9c607-a7f1-44b5-b0e9-1a0ead6a2084","html_url":"https://github.com/OpenStitching/stitching","commit_stats":{"total_commits":97,"total_committers":17,"mean_commits":5.705882352941177,"dds":"0.48453608247422686","last_synced_commit":"b890591b524bed72685dc9de2468db6f89a921ce"},"previous_names":["lukasalexanderweber/stitching"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenStitching%2Fstitching","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenStitching%2Fstitching/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenStitching%2Fstitching/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenStitching%2Fstitching/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenStitching","download_url":"https://codeload.github.com/OpenStitching/stitching/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254076366,"owners_count":22010601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-vision","image-stitching","opencv-python","panorama","python"],"created_at":"2024-09-24T20:14:40.409Z","updated_at":"2025-05-14T05:00:26.542Z","avatar_url":"https://github.com/OpenStitching.png","language":"Python","readme":"# stitching\n\nA Python package for fast and robust Image Stitching.\n\nBased on opencv's [stitching\nmodule](https://github.com/opencv/opencv/tree/4.x/modules/stitching)\nand inspired by the\n[stitching_detailed.py](https://github.com/opencv/opencv/blob/4.x/samples/python/stitching_detailed.py)\npython command line tool.\n\n![inputs](https://github.com/lukasalexanderweber/stitching_tutorial/blob/master/docs/static_files/inputs.png?raw=true)\n\n![result](https://github.com/lukasalexanderweber/stitching_tutorial/blob/master/docs/static_files/panorama.png?raw=true)\n\n## Installation\n\nuse the [docker image](#docker-cli)\n\nor `pip` to install `stitching` from\n[PyPI](https://pypi.org/project/stitching/).\n\n```bash\npip install stitching\n```\n\nfor server (headless) environments (such as Docker, cloud environments etc.)\nuse `stitching-headless`\n\n```bash\npip install stitching-headless\n```\n\n## Usage\n\n### Python CLI\n\nThe command line interface\n([cli](https://github.com/lukasalexanderweber/stitching/tree/main/stitching/cli/stitch.py))\nis available after installation\n\n`stitch -h`               show the help\n\n`stitch *.jpg`            stitches all jpg files in the current directory\n\n`stitch img_dir/IMG*.jpg` stitches all files in the img_dir directory\nstarting with \"IMG\" and ending with \".jpg\"\n\n`stitch img1.jpg img2.jpg img3.jpg`\nstitches the 3 explicit files of the current directory\n\nEnable verbose mode with `stitch *.jpg -v`.\nThis will create a folder where all intermediate results are stored so that\nyou can find out where there are problems with your images, if any\n\n### Docker CLI\n\nIf you are familiar with Docker and don't feel like\nsetting up Python and an environment, you can also use the\n[openstitching/stitch](https://hub.docker.com/r/openstitching/stitch)\nDocker image\n\n`docker container run --rm -v\n/path/to/data:/data openstitching/stitch:{version} -h`\n\nYou can use the Python CLI as described above\n(read \"current directory\" as \"/data directory\").\n\n### Python Script\n\nYou can also use the Stitcher class in your script\n\n```python\nfrom stitching import Stitcher\nstitcher = Stitcher()\n```\n\nSpecify your custom settings as\n\n```python\nstitcher = Stitcher(detector=\"sift\", confidence_threshold=0.2)\n```\n\nor\n\n```python\nsettings = {\"detector\": \"sift\", \"confidence_threshold\": 0.2}\nstitcher = Stitcher(**settings)\n```\n\nCreate a Panorama from your Images:\n\n- from a list of filenames\n\n```python\npanorama = stitcher.stitch([\"img1.jpg\", \"img2.jpg\", \"img3.jpg\"])\n```\n\n- from a single item list with a wildcard\n\n```python\npanorama = stitcher.stitch([\"img?.jpg\"])\n```\n\n- from a list of already loaded images\n\n```python\npanorama = stitcher.stitch([cv.imread(\"img1.jpg\"), cv.imread(\"img2.jpg\")])\n```\n\nThe equivalent of the `--affine` cli parameter within the script is\n\n```python\nfrom stitching import AffineStitcher\nstitcher = AffineStitcher()\npanorama = stitcher.stitch(...)\n```\n\nThe equivalent of the `-v`/`--verbose` cli parameter within the script is\n\n```python\npanorama = stitcher.stitch_verbose(...)\n```\n\n## Questions\n\nFor questions please use our [discussions](https://github.com/OpenStitching/stitching/discussions).\nPlease do not use our issue section for questions.\n\n## Contribute\n\nRead through [how to contribute](CONTRIBUTING.md) for information on topics\nlike finding and fixing bugs and improving / maintaining this package.\n\n## Tutorial\n\nThis package provides utility functions to deeply analyse what's\nhappening behind the stitching. A tutorial was created as [Jupyter\nNotebook](https://github.com/lukasalexanderweber/stitching_tutorial). The\npreview is\n[here](https://github.com/lukasalexanderweber/stitching_tutorial/blob/master/docs/Stitching%20Tutorial.md).\n\nYou can e.g. visualize the RANSAC matches between the images or the\nseam lines where the images are blended:\n\n![matches1](https://github.com/lukasalexanderweber/stitching_tutorial/blob/master/docs/static_files/matches1.png?raw=true)\n![matches2](https://github.com/lukasalexanderweber/stitching_tutorial/blob/master/docs/static_files/matches2.png?raw=true)\n![seams1](https://github.com/lukasalexanderweber/stitching_tutorial/blob/master/docs/static_files/seams1.png?raw=true)\n![seams2](https://github.com/lukasalexanderweber/stitching_tutorial/blob/master/docs/static_files/seams2.png?raw=true)\n\n## Literature\n\nThis package was developed and used for our paper [Automatic stitching\nof fragmented construction plans of hydraulic\nstructures](https://hdl.handle.net/20.500.11970/112696)\n\n## License\n\n[Apache License\n2.0](https://github.com/lukasalexanderweber/lir/blob/main/LICENSE)\n","funding_links":["https://opencollective.com/openstitching"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstitching%2Fstitching","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenstitching%2Fstitching","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstitching%2Fstitching/lists"}