Requirements

Set OTB environment

export PYTHONPATH=/path/to/OTB/install/lib/otb/python/:$PYTHONPATH
# Environment variable for old OTB versions (< 5.2)
export ITK_AUTOLOAD_PATH=/path/to/OTB/install/lib/otb/applications/
# Environment variable for new OTB versions (>= 5.2)
export OTB_APPLICATION_PATH=/path/to/OTB/install/lib/otb/applications/
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/path/to/OTB/install/lib/:$LD_LIBRARY_PATH

Set QGIS environment

export QGIS_PREFIX_PATH=/path/to/QGIS/install
export PYTHONPATH=$QGIS_PREFIX_PATH/share/qgis/python:$QGIS_PREFIX_PATH/share/qgis/python/plugins:$PYTHONPATH
# Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$QGIS_PREFIX_PATH/lib/:$LD_LIBRARY_PATH
# Add maintenance folder to python path
export PYTHONPATH=/path/to/QGIS/src/python/plugins/processing/algs/otb/maintenance:$PYTHONPATH

Check the white and black list for the current OTB version

In the maintenance directory, the OTB applications are split in two files black_list.xml and white_list.xml. These files are organized as follows. For each OTB version, a new node version with id as attribute is added to the node data. Each application is then added in the node app_name.

<?xml version="1.0"?>
<data>
    <version id="3.16">
        <app_name>BinaryMorphologicalOperation</app_name>
        <app_name>EdgeExtraction</app_name>
        <app_name>GrayScaleMorphologicalOperation</app_name>
        <app_name>DimensionalityReduction</app_name>
        <app_name>Pansharpening</app_name>
        <app_name>ExtractROI</app_name>
        <app_name>RigidTransformResample</app_name>
        <app_name>Segmentation</app_name>
        <app_name>KMeansClassification</app_name>
        <app_name>TrainSVMImagesClassifier</app_name>
        <app_name>ComputeConfusionMatrix</app_name>
        <app_name>OpticalCalibration</app_name>
        <app_name>SarRadiometricCalibration</app_name>
        <app_name>Smoothing</app_name>
    </version>
</data>

The list of available applications for each version is not fixed.

OTBSpecific_XMLcreation.py

Warning: Some of the applications needs to be split to be user-friendly. Here comes the file OTBSpecific_XMLcreation.py. Each function follows the pattern getNameOfTheOTBApplication().

Creating xml files

cd /path/to/QGIS/src/python/plugins/processing/algs/otb/maintenance
python ./OTBHelper.py