depthviz


Namedepthviz JSON
Version 0.5.2b1 PyPI version JSON
download
home_pageNone
SummaryAutomate depth tracking for your freediving videos: Works with or without dive computers.
upload_time2025-01-21 14:03:12
maintainerNone
docs_urlNone
authorNoppanut Ploywong
requires_python<4.0,>=3.9
licenseApache-2.0
keywords freediving dive video overlay depth dive-computer dive-log
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # depthviz: Transform your freediving footage with depth tracking

[![PyPI - Version](https://img.shields.io/pypi/v/depthviz?label=version&logo=pypi&logoColor=white)](https://pypi.org/project/depthviz/) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/noppanut15/depthviz/deploy.yaml?logo=github)](https://github.com/noppanut15/depthviz/actions) [![Coveralls](https://img.shields.io/coveralls/github/noppanut15/depthviz?logo=coveralls)](https://coveralls.io/github/noppanut15/depthviz) [![PyPI - Status](https://img.shields.io/pypi/status/depthviz?logo=pypi&logoColor=white)](https://pypi.org/project/depthviz/) [![PyPI Downloads](https://static.pepy.tech/badge/depthviz)](https://pepy.tech/projects/depthviz)

**depthviz** makes it easy to add dynamic depth tracking into your freediving footage. It is a command-line tool for generating depth overlay videos from the data recorded by your dive computer. It processes your dive log and creates a video that visualizes the depth over time.

![depthviz DEMO](https://raw.githubusercontent.com/noppanut15/depthviz/main/assets/demo-compressed-v2.gif)

This allows you to create more informative and engaging dive videos, enriching the storytelling experience for both yourself and your audience. [Click here to watch a sample video.](https://www.instagram.com/p/DAWI3jvy6Or/)

> [!TIP]
> For performance freedivers, you can incorporate `depthviz` into your dive analysis. By visualizing your dive profile, you can identify areas for improvement and track your progress over time.

# 🌟 Like depthviz?

Please give us a shiny [![star](https://img.shields.io/github/stars/noppanut15/depthviz
)](https://github.com/noppanut15/depthviz) and share `depthviz` with your freediving community! ⭐️

# 🛠️ Installation

**Prerequisites:**

* [Python](https://www.python.org/downloads/) (3.9 or higher) installed on your system.
* [pipx](https://pipx.pypa.io/stable/installation/) for installing Python CLI tools.

**Installation:**

```bash
pipx install depthviz
```

# 🚀 Usage

## 1. Download Your Data

- **✅ If you have a dive computer:**<br>Export your dive log from your dive computer or diving application. See the [source options table](#source-options) for supported formats.
- **🚫 If you don't have a dive computer:**<br>Record your dive profile manually using depth markers in your footage. See the [No Dive Computer?](#-no-dive-computer) section for more details.

## 2. Generate the Overlay

Use `depthviz` to generate a depth overlay video from your dive log.

```bash
depthviz -i <input_file> -s <source> -o <output_video.mp4>
```

**Required Arguments:**

* `-i`, `--input <input_file>`: Path to your dive log file.
* `-s`, `--source <source>`: Source of the data. See the table below for supported sources.
* `-o`, `--output <output_video.mp4>`: Path or filename for the generated video with the depth overlay. The output file format must be `.mp4`.

**Optional Arguments:**
* `-d`, `--decimal-places <0-2>`: Number of decimal places to display in the depth overlay. Valid values are `0`, `1`, or `2`. (Default: `0`)
* `--no-minus`: Hide the minus sign for depth values (e.g., display `10m` instead of `-10m`).
* `--font <font_file>`: Path to a custom font file for the text.
* `--bg-color <color>`: Background color (e.g., `green`, `'#000000'`). (Default: `black`)
  > 💡 You can use this option to set the background color to match your video editor's [chroma key](https://en.wikipedia.org/wiki/Chroma_key) color, if needed. (e.g., `--bg-color green`)
* `--stroke-width <0,1,2,...>`: Width of the stroke around the text in pixels. (Default: `2`)

<p align="center"><img src="https://raw.githubusercontent.com/noppanut15/depthviz/main/assets/depth-decimal-places-5s-trimmed.gif" alt="decimal places comparison"/></p>

> [!TIP]
> Use the `--decimal-places` option to control the precision of the depth display (e.g., `--decimal-places 1` displays depths like `-12.5m`)


### Source Options

|    Source    | Description                                                                                                                                     | File type | Status |
| :----------: | ----------------------------------------------------------------------------------------------------------------------------------------------- | :-------: | :----: |
| `apnealizer` | Data from [Apnealizer](https://apnealizer.com/) application.                                                                                    |    CSV    |   ✅    |
| `shearwater` | Data from [Shearwater](https://shearwater.com/pages/shearwater-cloud) dive computers.                                                           |    XML    |   ✅    |
|   `garmin`   | Data from [Garmin](https://github.com/noppanut15/depthviz/blob/main/docs/GARMIN.md) dive computers.                                             |    FIT    |   ✅    |
|   `suunto`   | Data from [Suunto](https://www.suunto.com/Support/faq-articles/suunto-app/what-type-of-files-can-i-export-from-the-suunto-app/) dive computers. |    FIT    |   ✅    |
|   `manual`   | Manual depth input. See the [No Dive Computer?](#-no-dive-computer) section for more details.                                                   |    CSV    |   ✅    |

**Example**:

Example of generating a depth overlay video named `depth_overlay.mp4` using data from `123456_ACTIVITY.fit` exported from [Garmin Connect](https://github.com/noppanut15/depthviz/blob/main/docs/GARMIN.md) (source: `garmin`).

```bash
depthviz -i 123456_ACTIVITY.fit -s garmin -o depth_overlay.mp4
```

## 3. Integrate with Your Footage

Import the generated overlay video into your preferred video editing software and combine it with your original dive footage. Adjust the blending and position of the overlay to suit your video style. 

> [Watch this short tutorial](https://www.youtube.com/watch?v=ZggKrWk98Ag) on how to import an overlay video in CapCut Desktop.

<br>

# 🚫 No Dive Computer?

**No Dive Computer, No Problem!** You can still create a depth overlay video by **manually inputting your dive log** using the `manual` source option.

**Example**:
```bash
depthviz -i <manual_input.csv> -s manual -o <output_video.mp4>
```

Freediving ropes with **depth markers** can help you record your dive profile manually. Use the depth markers in your footage as reference points to manually record your dive profile. Simply note the time and depth at each marker point to create your dive log.


|  ![Example of a Freediving Rope with Depth Markers](https://raw.githubusercontent.com/noppanut15/depthviz/main/assets/marked-rope-example.png)   |
| :----------------------------------------------------------------------------------------------------------------------------------------------: |
| *Example of a [Freediving Rope](https://2bfreeequipment.com/shop/2-b-free-freediving-rope-superstatic-marked-with-stopper/) with depth markers.* |

**Manual Mode Input File Format:**

The input file for manual mode should be a CSV file with the following columns:

* `Time`: The time in seconds (e.g., `0`, `1`, `2`, ...).
* `Depth`: The depth in meters (e.g., `10`, `9`, `8`, ...).

**You don't need to record the depth at every second.** Record the depth at each time point where a depth marker is visible in your footage. `depthviz` will interpolate the depth values between the recorded points to create a smooth depth profile. 

> [!TIP]
> To quickly generate a basic depth overlay, you can record just three points: **the start** (0m), **the maximum depth**, and **the end** (0m). `depthviz` will handle the rest! For more complex dives (e.g., dives with significant variations in descent/ascent rate or bottom time), more data points are recommended.

Here is an example of a manual mode input file:

| Time  | Depth |
| :---: | :---: |
|   0   |   0   |
|   6   |   5   |
|  12   |  10   |
|  19   |  15   |
|  26   |  10   |
|  33   |   5   |
|  39   |   0   |

Download the example input file [here](https://github.com/noppanut15/depthviz/blob/main/assets/manual-input-example.csv).

# 🧠 How It Works
`depthviz` works by parsing dive log data exported from various dive computers (or manually inputting dive data) and generating an overlay video that displays depth information.

Dive computers typically record either depth directly or pressure data. If the data is recorded as pressure, it is in the form of **absolute pressure**, which includes both atmospheric pressure and the pressure exerted by the water itself (hydrostatic pressure).


To determine the depth, `depthviz` uses the following approach:
1.  **If the dive log contains depth data directly:** `depthviz` uses this data directly.
2.  **If the dive log contains pressure data:**
    * First, the **hydrostatic pressure** is calculated by subtracting atmospheric pressure (collected during the surface interval or dive start) from the absolute pressure:<br><br><p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="https://latex.codecogs.com/svg.image?\large&space;{\color{White}\text{Hydrostatic&space;Pressure}=\text{Absolute&space;Pressure}-\text{Atmospheric&space;Pressure}}"><img src="https://latex.codecogs.com/svg.image?\large&space;\text{Hydrostatic&space;Pressure}=\text{Absolute&space;Pressure}-\text{Atmospheric&space;Pressure}" title="\text{Hydrostatic Pressure}=\text{Absolute Pressure}-\text{Atmospheric Pressure}" /></picture></p><br>
    * Then, the **fluid pressure formula** is used to calculate the depth:<br><br><p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="https://latex.codecogs.com/svg.image?\LARGE&space;{\color{White}P=\rho&space;g&space;h}"><img src="https://latex.codecogs.com/svg.image?\LARGE&space;&space;P=\rho&space;g&space;h" title=" P=\rho g h" /></picture></p> 
       Where:
         - $` P `$ is the fluid pressure,
         - $` \rho `$ is the density of the fluid (water),
         - $` g `$ is the acceleration due to gravity (9.80665 m/s²),
         - $` h `$ is the height (or depth) of the fluid column (what we want to calculate).
    * Rearranging the formula to solve for depth ($` h `$):<br><br><p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="https://latex.codecogs.com/svg.image?\LARGE&space;{\color{White}h=\frac{P}{\rho&space;g}}"><img src="https://latex.codecogs.com/svg.image?\LARGE&space;$$h=\frac{P}{\rho&space;g}$$" title="$$h=\frac{P}{\rho g}$$" /></picture></p><br>

Currently, `depthviz` uses a water density ($` \rho `$) according to the **EN13319 standard**, a European CE standard for dive computers, which assumes a water density of 1019.7 kg/m³.

The water density can vary depending on the type of water (e.g., freshwater, saltwater). Even different locations in the ocean can have varying densities. This variability can affect the accuracy of depth calculations. For more precise measurements, users may need to adjust the density value based on their specific diving environment. Especially for freshwater diving, the water density is lower than the standard value, which can lead to depth overestimation. We will add support for custom water density in future releases.
    
> [!NOTE]
> The EN13319 standard ensures the accuracy and reliability of depth measurements in dive computers. For more information, you can refer to the [EN13319 standard](https://standards.iteh.ai/catalog/standards/cen/5d35e933-ca50-4d80-8c9d-631f5597b784/en-13319-2000).

3. **Fill in the Gaps**: Different dive computers have different sampling rates, and the data may not be recorded at regular intervals. If the dive log data contains gaps or missing values, `depthviz` uses **Linear Interpolation** to estimate the depth at those points. This method calculates the depth at each time point by interpolating between the two nearest known depth values recorded by the dive computer. This will help ensure a smooth and continuous depth profile in the overlay video.

<p align="center"><img src="https://raw.githubusercontent.com/noppanut15/depthviz/main/assets/linear-interpolation.png" width="750" alt="Linear Interpolation"/></p>

> [!NOTE]
> Learn more about the [Linear Interpolation](https://en.wikipedia.org/wiki/Linear_interpolation) method and how it is used to estimate values between two known depths.

4. **Generate Overlay Video**: The depth information from the linearly interpolated data is rendered into an overlay video, displaying the depth over time. This overlay can then be combined with your original dive footage in your video editor.


# 🌱 Contribution

We welcome contributions to the `depthviz` project! If you have any ideas for improvement, bug fixes, or feature suggestions, feel free to [open an issue](https://github.com/noppanut15/depthviz/issues) to discuss or [submit a pull request](https://github.com/noppanut15/depthviz/pulls).

## ⌚ Help Us Expand Dive Computer Support!

**Missing your dive computer?** Help us add support! If you have a dive computer that is not currently supported by `depthviz`, you can help us by donating a sample dive log file exported from your device. This will allow us to analyze the data format and implement the necessary parsing logic to add support for your device.

To share your dive data, please follow the detailed instructions in our "[**Donate My Dive**](https://github.com/noppanut15/depthviz/issues/15)" guide.

## ⚖️ License

This project is licensed under the Apache License 2.0. See the [LICENSE](https://github.com/noppanut15/depthviz/blob/main/LICENSE) file for details.

## 📦 CycloneDX SBOM

This project provides a CycloneDX Software Bill of Materials (SBOM) in JSON format. The SBOM is generated by the [GitHub Actions workflow](https://github.com/noppanut15/depthviz/blob/main/.github/workflows/deploy.yaml) and is available as an artifact for each release. The SBOM is generated using the [cyclonedx-python](https://github.com/CycloneDX/cyclonedx-python) library.

## 📬 Contact

For any inquiries, please [open an issue](https://github.com/noppanut15/depthviz/issues) or contact the maintainer at [noppanut.connect@gmail.com](mailto:noppanut.connect@gmail.com).


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "depthviz",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "freediving, dive, video, overlay, depth, dive-computer, dive-log",
    "author": "Noppanut Ploywong",
    "author_email": "noppanut.connect@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/3f/bf/02b8ec7310eb1374ab5ade3b9c7dac534dab3bd696bac007dee283f728e1/depthviz-0.5.2b1.tar.gz",
    "platform": null,
    "description": "# depthviz: Transform your freediving footage with depth tracking\n\n[![PyPI - Version](https://img.shields.io/pypi/v/depthviz?label=version&logo=pypi&logoColor=white)](https://pypi.org/project/depthviz/) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/noppanut15/depthviz/deploy.yaml?logo=github)](https://github.com/noppanut15/depthviz/actions) [![Coveralls](https://img.shields.io/coveralls/github/noppanut15/depthviz?logo=coveralls)](https://coveralls.io/github/noppanut15/depthviz) [![PyPI - Status](https://img.shields.io/pypi/status/depthviz?logo=pypi&logoColor=white)](https://pypi.org/project/depthviz/) [![PyPI Downloads](https://static.pepy.tech/badge/depthviz)](https://pepy.tech/projects/depthviz)\n\n**depthviz** makes it easy to add dynamic depth tracking into your freediving footage. It is a command-line tool for generating depth overlay videos from the data recorded by your dive computer. It processes your dive log and creates a video that visualizes the depth over time.\n\n![depthviz DEMO](https://raw.githubusercontent.com/noppanut15/depthviz/main/assets/demo-compressed-v2.gif)\n\nThis allows you to create more informative and engaging dive videos, enriching the storytelling experience for both yourself and your audience. [Click here to watch a sample video.](https://www.instagram.com/p/DAWI3jvy6Or/)\n\n> [!TIP]\n> For performance freedivers, you can incorporate `depthviz` into your dive analysis. By visualizing your dive profile, you can identify areas for improvement and track your progress over time.\n\n# \ud83c\udf1f Like depthviz?\n\nPlease give us a shiny [![star](https://img.shields.io/github/stars/noppanut15/depthviz\n)](https://github.com/noppanut15/depthviz) and share `depthviz` with your freediving community! \u2b50\ufe0f\n\n# \ud83d\udee0\ufe0f Installation\n\n**Prerequisites:**\n\n* [Python](https://www.python.org/downloads/) (3.9 or higher) installed on your system.\n* [pipx](https://pipx.pypa.io/stable/installation/) for installing Python CLI tools.\n\n**Installation:**\n\n```bash\npipx install depthviz\n```\n\n# \ud83d\ude80 Usage\n\n## 1. Download Your Data\n\n- **\u2705 If you have a dive computer:**<br>Export your dive log from your dive computer or diving application. See the [source options table](#source-options) for supported formats.\n- **\ud83d\udeab If you don't have a dive computer:**<br>Record your dive profile manually using depth markers in your footage. See the [No Dive Computer?](#-no-dive-computer) section for more details.\n\n## 2. Generate the Overlay\n\nUse `depthviz` to generate a depth overlay video from your dive log.\n\n```bash\ndepthviz -i <input_file> -s <source> -o <output_video.mp4>\n```\n\n**Required Arguments:**\n\n* `-i`, `--input <input_file>`: Path to your dive log file.\n* `-s`, `--source <source>`: Source of the data. See the table below for supported sources.\n* `-o`, `--output <output_video.mp4>`: Path or filename for the generated video with the depth overlay. The output file format must be `.mp4`.\n\n**Optional Arguments:**\n* `-d`, `--decimal-places <0-2>`: Number of decimal places to display in the depth overlay. Valid values are `0`, `1`, or `2`. (Default: `0`)\n* `--no-minus`: Hide the minus sign for depth values (e.g., display `10m` instead of `-10m`).\n* `--font <font_file>`: Path to a custom font file for the text.\n* `--bg-color <color>`: Background color (e.g., `green`, `'#000000'`). (Default: `black`)\n  > \ud83d\udca1 You can use this option to set the background color to match your video editor's [chroma key](https://en.wikipedia.org/wiki/Chroma_key) color, if needed. (e.g., `--bg-color green`)\n* `--stroke-width <0,1,2,...>`: Width of the stroke around the text in pixels. (Default: `2`)\n\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/noppanut15/depthviz/main/assets/depth-decimal-places-5s-trimmed.gif\" alt=\"decimal places comparison\"/></p>\n\n> [!TIP]\n> Use the `--decimal-places` option to control the precision of the depth display (e.g., `--decimal-places 1` displays depths like `-12.5m`)\n\n\n### Source Options\n\n|    Source    | Description                                                                                                                                     | File type | Status |\n| :----------: | ----------------------------------------------------------------------------------------------------------------------------------------------- | :-------: | :----: |\n| `apnealizer` | Data from [Apnealizer](https://apnealizer.com/) application.                                                                                    |    CSV    |   \u2705    |\n| `shearwater` | Data from [Shearwater](https://shearwater.com/pages/shearwater-cloud) dive computers.                                                           |    XML    |   \u2705    |\n|   `garmin`   | Data from [Garmin](https://github.com/noppanut15/depthviz/blob/main/docs/GARMIN.md) dive computers.                                             |    FIT    |   \u2705    |\n|   `suunto`   | Data from [Suunto](https://www.suunto.com/Support/faq-articles/suunto-app/what-type-of-files-can-i-export-from-the-suunto-app/) dive computers. |    FIT    |   \u2705    |\n|   `manual`   | Manual depth input. See the [No Dive Computer?](#-no-dive-computer) section for more details.                                                   |    CSV    |   \u2705    |\n\n**Example**:\n\nExample of generating a depth overlay video named `depth_overlay.mp4` using data from `123456_ACTIVITY.fit` exported from [Garmin Connect](https://github.com/noppanut15/depthviz/blob/main/docs/GARMIN.md) (source: `garmin`).\n\n```bash\ndepthviz -i 123456_ACTIVITY.fit -s garmin -o depth_overlay.mp4\n```\n\n## 3. Integrate with Your Footage\n\nImport the generated overlay video into your preferred video editing software and combine it with your original dive footage. Adjust the blending and position of the overlay to suit your video style. \n\n> [Watch this short tutorial](https://www.youtube.com/watch?v=ZggKrWk98Ag) on how to import an overlay video in CapCut Desktop.\n\n<br>\n\n# \ud83d\udeab No Dive Computer?\n\n**No Dive Computer, No Problem!** You can still create a depth overlay video by **manually inputting your dive log** using the `manual` source option.\n\n**Example**:\n```bash\ndepthviz -i <manual_input.csv> -s manual -o <output_video.mp4>\n```\n\nFreediving ropes with **depth markers** can help you record your dive profile manually. Use the depth markers in your footage as reference points to manually record your dive profile. Simply note the time and depth at each marker point to create your dive log.\n\n\n|  ![Example of a Freediving Rope with Depth Markers](https://raw.githubusercontent.com/noppanut15/depthviz/main/assets/marked-rope-example.png)   |\n| :----------------------------------------------------------------------------------------------------------------------------------------------: |\n| *Example of a [Freediving Rope](https://2bfreeequipment.com/shop/2-b-free-freediving-rope-superstatic-marked-with-stopper/) with depth markers.* |\n\n**Manual Mode Input File Format:**\n\nThe input file for manual mode should be a CSV file with the following columns:\n\n* `Time`: The time in seconds (e.g., `0`, `1`, `2`, ...).\n* `Depth`: The depth in meters (e.g., `10`, `9`, `8`, ...).\n\n**You don't need to record the depth at every second.** Record the depth at each time point where a depth marker is visible in your footage. `depthviz` will interpolate the depth values between the recorded points to create a smooth depth profile. \n\n> [!TIP]\n> To quickly generate a basic depth overlay, you can record just three points: **the start** (0m), **the maximum depth**, and **the end** (0m). `depthviz` will handle the rest! For more complex dives (e.g., dives with significant variations in descent/ascent rate or bottom time), more data points are recommended.\n\nHere is an example of a manual mode input file:\n\n| Time  | Depth |\n| :---: | :---: |\n|   0   |   0   |\n|   6   |   5   |\n|  12   |  10   |\n|  19   |  15   |\n|  26   |  10   |\n|  33   |   5   |\n|  39   |   0   |\n\nDownload the example input file [here](https://github.com/noppanut15/depthviz/blob/main/assets/manual-input-example.csv).\n\n# \ud83e\udde0 How It Works\n`depthviz` works by parsing dive log data exported from various dive computers (or manually inputting dive data) and generating an overlay video that displays depth information.\n\nDive computers typically record either depth directly or pressure data. If the data is recorded as pressure, it is in the form of **absolute pressure**, which includes both atmospheric pressure and the pressure exerted by the water itself (hydrostatic pressure).\n\n\nTo determine the depth, `depthviz` uses the following approach:\n1.  **If the dive log contains depth data directly:** `depthviz` uses this data directly.\n2.  **If the dive log contains pressure data:**\n    * First, the **hydrostatic pressure** is calculated by subtracting atmospheric pressure (collected during the surface interval or dive start) from the absolute pressure:<br><br><p align=\"center\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://latex.codecogs.com/svg.image?\\large&space;{\\color{White}\\text{Hydrostatic&space;Pressure}=\\text{Absolute&space;Pressure}-\\text{Atmospheric&space;Pressure}}\"><img src=\"https://latex.codecogs.com/svg.image?\\large&space;\\text{Hydrostatic&space;Pressure}=\\text{Absolute&space;Pressure}-\\text{Atmospheric&space;Pressure}\" title=\"\\text{Hydrostatic Pressure}=\\text{Absolute Pressure}-\\text{Atmospheric Pressure}\" /></picture></p><br>\n    * Then, the **fluid pressure formula** is used to calculate the depth:<br><br><p align=\"center\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://latex.codecogs.com/svg.image?\\LARGE&space;{\\color{White}P=\\rho&space;g&space;h}\"><img src=\"https://latex.codecogs.com/svg.image?\\LARGE&space;&space;P=\\rho&space;g&space;h\" title=\" P=\\rho g h\" /></picture></p> \n       Where:\n         - $` P `$ is the fluid pressure,\n         - $` \\rho `$ is the density of the fluid (water),\n         - $` g `$ is the acceleration due to gravity (9.80665 m/s\u00b2),\n         - $` h `$ is the height (or depth) of the fluid column (what we want to calculate).\n    * Rearranging the formula to solve for depth ($` h `$):<br><br><p align=\"center\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://latex.codecogs.com/svg.image?\\LARGE&space;{\\color{White}h=\\frac{P}{\\rho&space;g}}\"><img src=\"https://latex.codecogs.com/svg.image?\\LARGE&space;$$h=\\frac{P}{\\rho&space;g}$$\" title=\"$$h=\\frac{P}{\\rho g}$$\" /></picture></p><br>\n\nCurrently, `depthviz` uses a water density ($` \\rho `$) according to the **EN13319 standard**, a European CE standard for dive computers, which assumes a water density of 1019.7 kg/m\u00b3.\n\nThe water density can vary depending on the type of water (e.g., freshwater, saltwater). Even different locations in the ocean can have varying densities. This variability can affect the accuracy of depth calculations. For more precise measurements, users may need to adjust the density value based on their specific diving environment. Especially for freshwater diving, the water density is lower than the standard value, which can lead to depth overestimation. We will add support for custom water density in future releases.\n    \n> [!NOTE]\n> The EN13319 standard ensures the accuracy and reliability of depth measurements in dive computers. For more information, you can refer to the [EN13319 standard](https://standards.iteh.ai/catalog/standards/cen/5d35e933-ca50-4d80-8c9d-631f5597b784/en-13319-2000).\n\n3. **Fill in the Gaps**: Different dive computers have different sampling rates, and the data may not be recorded at regular intervals. If the dive log data contains gaps or missing values, `depthviz` uses **Linear Interpolation** to estimate the depth at those points. This method calculates the depth at each time point by interpolating between the two nearest known depth values recorded by the dive computer. This will help ensure a smooth and continuous depth profile in the overlay video.\n\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/noppanut15/depthviz/main/assets/linear-interpolation.png\" width=\"750\" alt=\"Linear Interpolation\"/></p>\n\n> [!NOTE]\n> Learn more about the [Linear Interpolation](https://en.wikipedia.org/wiki/Linear_interpolation) method and how it is used to estimate values between two known depths.\n\n4. **Generate Overlay Video**: The depth information from the linearly interpolated data is rendered into an overlay video, displaying the depth over time. This overlay can then be combined with your original dive footage in your video editor.\n\n\n# \ud83c\udf31 Contribution\n\nWe welcome contributions to the `depthviz` project! If you have any ideas for improvement, bug fixes, or feature suggestions, feel free to [open an issue](https://github.com/noppanut15/depthviz/issues) to discuss or [submit a pull request](https://github.com/noppanut15/depthviz/pulls).\n\n## \u231a Help Us Expand Dive Computer Support!\n\n**Missing your dive computer?** Help us add support! If you have a dive computer that is not currently supported by `depthviz`, you can help us by donating a sample dive log file exported from your device. This will allow us to analyze the data format and implement the necessary parsing logic to add support for your device.\n\nTo share your dive data, please follow the detailed instructions in our \"[**Donate My Dive**](https://github.com/noppanut15/depthviz/issues/15)\" guide.\n\n## \u2696\ufe0f License\n\nThis project is licensed under the Apache License 2.0. See the [LICENSE](https://github.com/noppanut15/depthviz/blob/main/LICENSE) file for details.\n\n## \ud83d\udce6 CycloneDX SBOM\n\nThis project provides a CycloneDX Software Bill of Materials (SBOM) in JSON format. The SBOM is generated by the [GitHub Actions workflow](https://github.com/noppanut15/depthviz/blob/main/.github/workflows/deploy.yaml) and is available as an artifact for each release. The SBOM is generated using the [cyclonedx-python](https://github.com/CycloneDX/cyclonedx-python) library.\n\n## \ud83d\udcec Contact\n\nFor any inquiries, please [open an issue](https://github.com/noppanut15/depthviz/issues) or contact the maintainer at [noppanut.connect@gmail.com](mailto:noppanut.connect@gmail.com).\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Automate depth tracking for your freediving videos: Works with or without dive computers.",
    "version": "0.5.2b1",
    "project_urls": {
        "Repository": "https://github.com/noppanut15/depthviz"
    },
    "split_keywords": [
        "freediving",
        " dive",
        " video",
        " overlay",
        " depth",
        " dive-computer",
        " dive-log"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ee43c8f5d9ff3363c67242b46ccec313cc5cef25d31de55722e9b1506eebdaad",
                "md5": "82a1623c91843f317f8ec6f03d996333",
                "sha256": "8a4466cf719b0626e9412dd6c7f5edec73091d93e840457b19cd91a47a239e67"
            },
            "downloads": -1,
            "filename": "depthviz-0.5.2b1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "82a1623c91843f317f8ec6f03d996333",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 3671476,
            "upload_time": "2025-01-21T14:03:09",
            "upload_time_iso_8601": "2025-01-21T14:03:09.749867Z",
            "url": "https://files.pythonhosted.org/packages/ee/43/c8f5d9ff3363c67242b46ccec313cc5cef25d31de55722e9b1506eebdaad/depthviz-0.5.2b1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3fbf02b8ec7310eb1374ab5ade3b9c7dac534dab3bd696bac007dee283f728e1",
                "md5": "c66eb99d6e5d53e0f0556a862aef64e2",
                "sha256": "98dc54a3c5b0e8b6e350462a849a3d1cd8333fd99b6514d6db23aa0fb83597e3"
            },
            "downloads": -1,
            "filename": "depthviz-0.5.2b1.tar.gz",
            "has_sig": false,
            "md5_digest": "c66eb99d6e5d53e0f0556a862aef64e2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 3662307,
            "upload_time": "2025-01-21T14:03:12",
            "upload_time_iso_8601": "2025-01-21T14:03:12.432212Z",
            "url": "https://files.pythonhosted.org/packages/3f/bf/02b8ec7310eb1374ab5ade3b9c7dac534dab3bd696bac007dee283f728e1/depthviz-0.5.2b1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-21 14:03:12",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "noppanut15",
    "github_project": "depthviz",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "depthviz"
}
        
Elapsed time: 1.06663s