{"id":15992024,"url":"https://github.com/aanastasiou/pywundercam","last_synced_at":"2026-02-28T04:02:16.401Z","repository":{"id":40978371,"uuid":"208170458","full_name":"aanastasiou/pywundercam","owner":"aanastasiou","description":"Python interface to the Wunder 360 S1 panoramic camera.","archived":false,"fork":false,"pushed_at":"2022-12-08T05:21:47.000Z","size":162,"stargazers_count":3,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-23T05:41:06.840Z","etag":null,"topics":["image-acquisition","panoramic-camera","python-module","python3"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aanastasiou.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-13T00:42:02.000Z","updated_at":"2020-09-19T12:31:06.000Z","dependencies_parsed_at":"2023-01-24T14:15:22.396Z","dependency_job_id":null,"html_url":"https://github.com/aanastasiou/pywundercam","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aanastasiou/pywundercam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aanastasiou%2Fpywundercam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aanastasiou%2Fpywundercam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aanastasiou%2Fpywundercam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aanastasiou%2Fpywundercam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aanastasiou","download_url":"https://codeload.github.com/aanastasiou/pywundercam/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aanastasiou%2Fpywundercam/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262094661,"owners_count":23258015,"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":["image-acquisition","panoramic-camera","python-module","python3"],"created_at":"2024-10-08T06:05:02.842Z","updated_at":"2025-10-29T02:48:00.405Z","avatar_url":"https://github.com/aanastasiou.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyWunderCam\n\n`PyWunderCam` is a Python module that enables control of the Wunder 360 S1 panoramic camera from a Python program.\n\n![](doc/source/_static/Wunder360S1.jpg)\n\nThe camera is based on a Rockchip 1108 System on Chip (SoC) running Linux. \nWithin its operating system, it raises three services to serve images and video, control the camera and stream video \nover a WiFi interface. In addition to these services, the camera presents itself as a standard webcam if connected \nvia USB. \n\nAt the time of writing, PyWunderCam interfaces with the first two services and enables functionality that is not \npossible via the provided mobile phone application. \n\nStreaming video and extended functionality are scheduled for upcoming releases.\n\n## Installation\n\nAt the moment, installation is recommended directly from this repository with:\n\n```\npip install git+https://github.com/aanastasiou/pywundercam\n```\n\n\n## Quickstart\n\n```\n    from pywundercam import PyWunderCamAuto\n    \n    camera_control = PyWunderCamAuto()\n```    \n\n### Single 360 Shot\n\n```\n    single_photo = camera_control.single_shot()\n```\n\n\n### Continuous (Burst) 360 Shot\n\n```\n    photos = camera_control.continuous_shot()\n```\n\n### Altering the ISO, White Balance and Exposure Compensation Modes\n\nBoth of the above functions ( `.single_shot()`, `.continuous_shot()`) take optional parameters \n`iso`, `white_balance_mode` and `exposure_compensation`. For more information on the values of \ncamera state parameters, please see `pywundercam.CamState`.\n\n### Storing Images\n\nTo store the result of a single shot:\n\n```\n    single_photo[0].save_to(\"MyImage.jpg\")\n```\n\nTo store the result of a continuous (burst) shot:\n\n```\n    photos[0].save_to(\"./\")\n```    \n\nWorth noting at this point that:\n\n1. In the case of a single image, all that is required is a filename. When saving \n   the result of a continuous (burst) shot, all that is required is a directory \n   in which all files belonging to the same shot will be stored.\n\n2. Depending on file sizes and number of shots (in continuous mode), the file transfers \n   might appear to be inserting a small delay in the whole process.\n       \n### Displaying images\n\n`pywundercam` makes use of the `pillow` module and returns images that are ready to be forwarded to \nPython's ritch ecosystem of image processing modules. A quick way of displaying the image is to use `matplotlib`.\n\nContinuing from the above example, to display the result of a single shot:\n\n```\n    from matplotlib import pyplot as plt\n    \n    plt.imshow(single_photo[0].get())\n    plt.axis(\"off\")\n    plt.show()\n```\n    \nAnd in the case of a continuous (burst) shot, a specific picture out of the set would have to be chosen first:\n\n```\n    plt.imshow(photos[0].get())\n    plt.axis(\"off\")\n    plt.show()\n```\n\n\nThis concludes the quickstart guide which makes use of `PyWunderCamAuto`. Although this client allows you to take \npictures in single and continuous (burst) modes, the real power of `pywundercam` is in the underlying client object \n`PyWunderCam` that allows finer control over the complete parameter set of the Wunder 360 S1.\n\nYou can now [browse the rest of the documentation](https://pywundercam.readthedocs.io/en/latest/) to learn more about exceptions, hardware, and the general design of PyWunderCam.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faanastasiou%2Fpywundercam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faanastasiou%2Fpywundercam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faanastasiou%2Fpywundercam/lists"}