Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/natlee/fisheye-warping
Dewarp top-down fisheye image to panorama and rewarp panorama to fisheye image.
https://github.com/natlee/fisheye-warping
cli fisheye image-processing image-warping opencv opencv-python panorama python3 tools warping
Last synced: about 1 month ago
JSON representation
Dewarp top-down fisheye image to panorama and rewarp panorama to fisheye image.
- Host: GitHub
- URL: https://github.com/natlee/fisheye-warping
- Owner: NatLee
- License: mit
- Created: 2023-05-05T07:38:26.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-05-07T13:59:13.000Z (over 1 year ago)
- Last Synced: 2024-10-11T16:22:56.436Z (about 1 month ago)
- Topics: cli, fisheye, image-processing, image-warping, opencv, opencv-python, panorama, python3, tools, warping
- Language: Python
- Homepage: https://pypi.org/project/FisheyeWarping/
- Size: 2.23 MB
- Stars: 10
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# **Fisheye Warping**
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/FisheyeWarping.svg)](https://pypi.python.org/pypi/FisheyeWarping/) [![PyPI implementation](https://img.shields.io/pypi/implementation/FisheyeWarping.svg)](https://pypi.python.org/pypi/FisheyeWarping/)
[![Test](https://github.com/NatLee/fisheye-warping/actions/workflows/test.yml/badge.svg)](https://github.com/NatLee/Eagle-Wrappger/actions/workflows/test.yml) [![Release](https://github.com/NatLee/fisheye-warping/actions/workflows/release.yml/badge.svg)](https://github.com/NatLee/fisheye-warping/actions/workflows/release.yml)
[![PyPI status](https://img.shields.io/pypi/status/FisheyeWarping.svg)](https://pypi.python.org/pypi/FisheyeWarping/) [![PyPI license](https://img.shields.io/pypi/l/FisheyeWarping.svg)](https://pypi.python.org/pypi/FisheyeWarping/)
[![PyPI version fury.io](https://badge.fury.io/py/FisheyeWarping.svg)](https://pypi.python.org/pypi/FisheyeWarping/)
[![PyPI download month](https://img.shields.io/pypi/dm/FisheyeWarping.svg)](https://pypi.python.org/pypi/FisheyeWarping/) [![PyPI download week](https://img.shields.io/pypi/dw/FisheyeWarping.svg)](https://pypi.python.org/pypi/FisheyeWarping/) [![PyPI download day](https://img.shields.io/pypi/dd/FisheyeWarping.svg)](https://pypi.python.org/pypi/FisheyeWarping/)
[![forthebadge made-with-python](http://ForTheBadge.com/images/badges/made-with-python.svg)](https://www.python.org/)
A tool for dewarping and rewarping on a top-down fisheye image by using OpenCV on Python.
## Installation
```bash
pip install FisheyeWarping
```Check it in [Pypi](https://pypi.org/project/FisheyeWarping/)
## Usage
```bash
fisheyewarping --help
``````
usage: fisheyewarping [-h] [--panorama_output PANORAMA_OUTPUT] [--fisheye_output FISHEYE_OUTPUT] [--save_dewarp_mesh_path SAVE_DEWARP_MESH_PATH] [--save_rewarp_mesh_path SAVE_REWARP_MESH_PATH] [--load_dewarp_mesh_path LOAD_DEWARP_MESH_PATH]
[--load_rewarp_mesh_path LOAD_REWARP_MESH_PATH] [--fisheye_img_path FISHEYE_IMG_PATH] [--panorama_img_path PANORAMA_IMG_PATH] [--use_multiprocessing USE_MULTIPROCESSING]optional arguments:
-h, --help show this help message and exit
--panorama_output PANORAMA_OUTPUT
Specific path for `output`. Default is `./dewarp-output.png`.
--fisheye_output FISHEYE_OUTPUT
Specific path for `output`. Default is `./rewarp-output.png`.
--save_dewarp_mesh_path SAVE_DEWARP_MESH_PATH
Specific path for saving mesh data for `dewarping`. Default is `None`.
--save_rewarp_mesh_path SAVE_REWARP_MESH_PATH
Specific path for saving mesh data for `rewarping`. Default is `None`.
--load_dewarp_mesh_path LOAD_DEWARP_MESH_PATH
Specific path for loading mesh data for `dewarping`. Default is `None`.
--load_rewarp_mesh_path LOAD_REWARP_MESH_PATH
Specific path for loading mesh data for `rewarping`. Default is `None`.
--fisheye_img_path FISHEYE_IMG_PATH
Specific path of your fisheye image for dewarping to a panorama.
--panorama_img_path PANORAMA_IMG_PATH
Specific path of your panorama image for rewarping to a fisheye image.
--use_multiprocessing USE_MULTIPROCESSING
Use multiprocessing to get mesh. Default is `True`.
```## Example
### Dewarp a fisheye image to panorama
- In the first time, you will need to build a mesh file for dewarping.
```bash
fisheyewarping \
--save_dewarp_mesh_path ./dewarp-mesh.pkl \
--fisheye_img_path ./test-fisheye.jpg
``````python
import cv2
from fisheyewarping import FisheyeWarping
fisheye_img = cv2.imread('./test-fisheye.jpg')
frd = FisheyeWarping(fisheye_img, use_multiprocessing=True)
frd.build_dewarp_mesh(save_path='./dewarp-mesh.pkl')
frd.run_dewarp(save_path='./dewarp-output.png')
```- In the next time, you just load the mesh and feel free to go.
```bash
fisheyewarping \
--load_dewarp_mesh_path ./dewarp-mesh.pkl \
--fisheye_img_path ./test-fisheye.jpg
``````python
import cv2
from fisheyewarping import FisheyeWarping
fisheye_img = cv2.imread('./test-fisheye.jpg'.)
frd = FisheyeWarping(fisheye_img, use_multiprocessing=True)
frd.load_dewarp_mesh(save_path='./dewarp-mesh.pkl')
frd.run_dewarp(save_path='./dewarp-output.png')
```### Rewarp any panorama image to fisheye
- In the first time, you will need to build 2 mesh files for dewarping and rewarping by using one fisheye image.
```bash
fisheyewarping \
--save_dewarp_mesh_path ./dewarp-mesh.pkl \
--save_rewarp_mesh_path ./rewarp-mesh.pkl \
--fisheye_img_path ./test-fisheye.jpg
``````python
import cv2
from fisheyewarping import FisheyeWarping
fisheye_img = cv2.imread('./test-fisheye.jpg'.)
frd = FisheyeWarping(fisheye_img, use_multiprocessing=True)
frd.build_dewarp_mesh(save_path='./dewarp-mesh.pkl')
frd.build_rewarp_mesh(save_path='./rewarp-mesh.pkl')
panorama_img = cv2.imread('./test-panorama.jpg'.)
frd.run_rewarp_with_mesh(panorama_img, save_path='./rewarp-output.png')
```- In the next time, you just load the meshes and feel free to go.
```bash
fisheyewarping \
--load_dewarp_mesh_path ./dewarp-mesh.pkl \
--load_rewarp_mesh_path ./rewarp-mesh.pkl \
--panorame_img_path ./test-panorama.jpg
``````python
import cv2
from fisheyewarping import FisheyeWarping
frd = FisheyeWarping(None, use_multiprocessing=True)
frd.load_dewarp_mesh(save_path='./dewarp-mesh.pkl')
frd.load_rewarp_mesh(save_path='./rewarp-mesh.pkl')
panorama_img = cv2.imread('./test-panorama.jpg'.)
frd.run_rewarp_with_mesh(panorama_img, save_path='./rewarp-output.png')
```## Mesh
> The source of mesh image is from (http://paulbourke.net/dome/fish2/).
Here is the mesh image for this tool, it shows the transformation from the original fisheye image to the panorama image.
- Before - **Fisheye**
- After - **Panorama**
## Contributor
## LICENSE
[MIT](LICENSE)