.. role:: raw-html-m2r(raw)
:format: html
Contents
========
* `Basler Camera <#basler-camera>`__
Basler Camera
-------------
**NOTE**\ :
* ``Pixel Formats``
.. list-table::
:header-rows: 1
* - Camera Model
- Tested Pixel Formats
* - Basler acA1920-40gc
- mono8\ :raw-html-m2r:`
`\ ycbcr422_8\ :raw-html-m2r:`
`\ bayerrggb
* - Basler acA1920-150uc
- mono8\ :raw-html-m2r:`
`\ rgb8\ :raw-html-m2r:`
`\ bgr8\ :raw-html-m2r:`
`\ bayerbggr
*
In case one wants to use any of the bayer pixel-format then ``bayer2rgb`` element needs to be used to covert raw bayer data to RGB. Refer the below example pipeline.
.. code-block:: javascript
{
"type": "gstreamer",
"template": [
"gencamsrc serial= pixel-format=bayerrggb name=source ! bayer2rgb ! videoconvert ! video/x-raw,format=BGR ! appsink name=destination"
],
//
}
*
In case one wants to use ``mono8`` image format or wants to work with monochrome camera then change the ``pixel-format`` to ``mono8`` in the pipeline. Since ``gstreamer`` ingestor expects a ``BGR`` image format, a single channel ``GRAY8`` format would be converted to 3 channel BGR format.
**Example pipeline to use ``mono8`` imageformat or work with monochrome basler camera:**
.. code-block:: javascript
{
"type": "gstreamer",
"template": [
"gencamsrc serial= pixel-format=mono8 name=source ! videoconvert ! video/x-raw,format=BGR ! appsink name=destination"
],
//
}
*
In case one wants to enable resizing with basler camera ``vaapipostproc`` element can be used to specify the height and width parameter in the gstreamer pipeline.
**Example pipeline to enable resizing the frame to ``600x600`` with basler camera:**
.. code-block:: javascript
{
"type": "gstreamer",
"template": [
"gencamsrc serial= pixel-format= name=source ! vaapipostproc height=600 width=600 ! videoconvert ! video/x-raw,format=BGR ! appsink name=destination"
],
//
}
*
In case one wants to divert the colour space conversion to ``GPU`` for basler camera ``vaapipostproc`` can be used. This can be useful when the CPU% is maxing out due to the input ingestion stream.
**Example pipeline to perform color space conversion from ``YUY2 to BGRx`` in GPU with ``vaapipostproc`` with basler camera:**
.. code-block:: javascript
{
"type": "gstreamer",
"template": [ "gencamsrc serial= pixel-format= name=source ! vaapipostproc format=bgrx ! videoconvert ! video/x-raw,format=BGR ! appsink name=destination"
],
//
}
``Basler camera hardware triggering``
*
If the camera is configured for triggered image acquisition, one can trigger image captures at particular points in time.
*
With respect to hardware triggering if the camera supports it then an electrical signal can be applied to one of the camera's input lines which can act as a trigger signal.
*
In order to configure the camera for hardware triggering, during our tests we set the following properties of Generic Plugin.
* ``trigger-selector=FrameStart`` - the camera initializes the acquisition of only image
* ``acquisition-mode=singleframe`` - the camera will acquire exactly one image
* ``trigger-source=Line1`` - the appropriate H/W trigger source needs to be selected
* ``trigger-activation=RisingEdge`` - the approriate trigger activation parameter need to be selected
*
``hw-trigger-timeout=100`` - the H/W trigger timeout value in seconds in multiples of 5
For more information on the properties related to hardware triggering refer Generic-Plugin-readme(\ ``[WORK_DIR]/IEdgeInsights/EdgeVideoAnalyticsMicroservice/eii/src-gst-gencamsrc/README``\ )
``Validated test setup for basler camera hardware triggering``
*
In our test setup a python script was used to control a ModBus I/O module to generate a digital output to Opto-insulated input line(Line1) of the basler camera.
*
For testing the hardware trigger functionality Basler ``acA1920-40gc`` camera model had been used.
..
**Note**\ : Other triggering capabilities with different camera models are not tested.