<a id="vimbaxbridge"></a>

# VimbaXBridge - Using Images from VimbaX Sources

<a id="vimbaxbridge-and-vimbax"></a>

## VimbaXBridge and VimbaX

**VimbaXBridge** is a user-friendly namespace of conversion classes. These classes perform the direct conversion from a buffer originating from **VimbaX** to an **eVision** data container.

<a id="vimbaxbridge-prerequisites"></a>

## Prerequisites

* **Open eVision** 23.12 (or newer)
* **VimbaX** 1.0 (or newer)

<a id="vimbaxbridge-libraries"></a>

## Libraries

* To use **VimbaXBridge** in C++, include the main **VimbaX** headers before the **eVision** header.
  ```cpp
  #include <VmbC/VmbC.h>          // or #include <VmbCPP/VmbCPP.h>
  #include <VmbImageTransform/VmbTransform.h>
  #include "eVision.h"             // or #include "Easy.h"
  ```

<a id="vimbaxbridge-data-containers"></a>

## Data Containers

* **VimbaXBridge** is part of the main **eVision** header.
* The `VmbImageTransform` header is required only if you need to perform a pixel format conversion.
* Each **VimbaXBridge** class derives from a specific data container.

  The following classes are implemented:

  | **Base class**                                                                                                                                                                                                  | **VimbaXBridge class**                                                                        | **Corresponding GenAPI pixel format**                |
  |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|------------------------------------------------------|
  | [`EImageBW8`](../../doxygen_cpp/classeVision_1_1EImageBW8.html) [<sub>.NET</sub>](../../doxygen_cs/classeVision_1_1EImageBW8.html) [<sub>Python</sub>](../../doxygen_python/classeVision_1_1EImageBW8.html)     | [`EVimbaXImageBW8`](../../doxygen_cpp/classeVision_1_1VimbaXBridge_1_1EVimbaXImageBW8.html)   | `Mono8, BayerGR8, BayerRG8, BayerGB8, BayerBG8`      |
  | [`EImageBW16`](../../doxygen_cpp/classeVision_1_1EImageBW16.html) [<sub>.NET</sub>](../../doxygen_cs/classeVision_1_1EImageBW16.html) [<sub>Python</sub>](../../doxygen_python/classeVision_1_1EImageBW16.html) | [`EVimbaXImageBW16`](../../doxygen_cpp/classeVision_1_1VimbaXBridge_1_1EVimbaXImageBW16.html) | `Mono16, BayerGR16, BayerRG16, BayerGB16, BayerBG16` |
  | [`EImageC24`](../../doxygen_cpp/classeVision_1_1EImageC24.html) [<sub>.NET</sub>](../../doxygen_cs/classeVision_1_1EImageC24.html) [<sub>Python</sub>](../../doxygen_python/classeVision_1_1EImageC24.html)     | [`EVimbaXImageC24`](../../doxygen_cpp/classeVision_1_1VimbaXBridge_1_1EVimbaXImageC24.html)   | `BGR8`                                               |
* These classes have 2 constructors:
  * 1 that requires only a **VimbaX** C frame descriptor and an optional color transformation directive.
  * 1 that requires only a **VimbaX** C++ frame descriptor and an optional color transformation directive.
* Scope and copy of the buffer:
  **eVision** does not perform any copy of the buffer unless:
  * You require a pixel format conversion.
  * The color transformation directive is set to `Always`, in which case a copy is always performed.

<a id="vimbaxbridge-see-alsos"></a>

## See Also

Easy to understand, ready to copy code snippets.

Python sample acquiring image using **VimbaXBridge**.
