Developer Preview - This may change with updates.


The DUO SDK provides cross-platform APIs and examples for working with multi-view vision systems. Built on modern image processing techniques which leverage the latest technologies from Intel/ARM (MMX, SSE4, NEON) and parallel computing methods. The DUO SDK is a highly optimized architecture for image acquisition/processing. Developers can leverage this framework to build and deploy their own applications.

Supported Platforms
  • Windows
  • Linux
  • Ubuntu
  • ARM Processors
  • Nvidia Jetson TX1/TX2
  • Raspberry Pi3
  • .NET
  • OpenCV
  • Qt


Libraries Summary

Here are the key libraries you will interact when working with the SDK:

  • DUOLib - The DUO Device API provides access to the DUO device allowing for control, configuration and device information.
  • DUODense3DLib - The DUO Dense3D API implements Dense3D processor for generation of a depth map from the DUO image frames.
  • DUODense3DMTLib - The DUO Dense3DMT API implements multi-threaded Dense3D processor for generation of a depth map from the DUO image frames.


We use the cross platform CMake tool to generate IDE/compiler specific projects. To compile the samples you will need to install the latest CMake and use either the command line or GUI to configure and generate the projects. We also provide examples that use OpenCV which you can download from their website. If you wish to bypass the OpenCV install simply remove Sample-06 from the CMakeLists.txt before generating your build files.

Build Environment


Windows OS

1) Visual Studio 2015+ Recommended
2) Download and install CMake installer (Select the "Add to the PATH" option)
3) Download and extract OpenCV 3.3.0 into C:\OpenCV\3.3.0
4) Add C:\OpenCV\3.3.0 to the system PATH variable


Linux OS

1) Install build-essential
2) Download and install CMake
3) Install libgtk2.0-dev
4) Download and build OpenCV 3.3.0 from source

  • Extract the zip and open a new terminal
  • In the terminal and navigate to the OpenCV folder
  • Use Cmake command line or GUI to generate Makefiles (should generate a build folder)
  • Type 'cd build' and then make install commands to install OpenCV

Building the Samples

We provide a build script in the samples directory which you can run to quickly generate the sample binaries. The executable files will be generated in the bin folder. You can also use Cmake to generate for specific IDE/compiler such as Visual Studio/XCode/etc.


Double-click or run BuildAll-x86/x64.cmd from command prompt


In terminal type: ./BuildAll.sh

Code Samples

Included with the SDK are several examples to help developers get started. We will also publish more to the github project as we release updates.

Capturing Motion Data

C/C++ Sample 01 - Shows how to capture and debut the DUO minilx motion data.

Capturing Image Data

C/C++ Sample 02 - Shows how to capture the DUO image frame data from CMOS sensors.

Configuring Parameters

C/C++ Sample 03 - Shows how to configure the programmable LED Array.

Configuring LED Sequences

C/C++ Sample 04 - Shows how to pass sequences the programmable LED Array.

Capture frames using polling mechanism

C/C++ Sample 05 - Demonstrates polling mechanism for capturing frames.

Capture frames using polling mechanism (OpenCV)

OpenCV Sample 01 - Demonstrates polling mechanism and displays captured frames using OpenCV.

Hardware background subtraction (OpenCV)

OpenCV Sample 02 - Demonstrates hardware background subtraction using DUO MLX programmable LEDs.

Generating a depth map with Dense3D Middleware

Dense3D Sample 01 - Demonstrates generating a depth map with Dense3D Middleware.

Generating a depth map with Dense3DMT Middleware

Dense3D Sample 02 - Demonstrates generating a depth map with Dense3D multi-threaded Middleware.

Rendering 3D point cloud with Dense3DMT Middleware and OpenGL/GLUT

Dense3D Sample 03 - Demonstrates generating a depth map with Dense3D multi-threaded Middleware and displaying resulting point cloud in OpenGL window.


DUO works well with common vision related frameworks such as the Robot Operating System (ROS), OpenCV, MRPT and more. Get started by reviewing our integration articles


Here is a quick overview of the directory structure of the DUO SDK and code samples:

|   +---bin (Output)
|   +---C#
|   |   +---DUODeviceLib
|   |   +---Sample-01-Console     
|   |   +---Sample-02-DeviceConsole
|   |   \---Sample-03-WPF  
|   +---C++
|   |   |   README.txt
|   |   |   CMakeLists.txt
|   |   +---Sample-01-Motion
|   |   +---Sample-02-Images 
|   |   +---Sample-03-Parameters  
|   |   +---Sample-04-Sequences   
|   |   \---Sample-05-Polling   
|   +---Dense3D
|   |   +---Sample-01-Dense3D  
|   |   +---Sample-02-Dense3DMT
|   |   \---Sample-03-Dense3DPointCloud
|   +---OpenCV
|   |   +---Sample-01-cvShowImage     
|   |   \---Sample-02-cvBGSubtract
|   \---Qt
|       \---Sample-01-Display    
    |   +---Dense3D.h
    |   +---Dense3DMT.h
    |   \---DUOLib.h
    |   +---x64
    |   |   +---Dense3D.dll
    |   |   +---Dense3D.lib
    |   |   +---Dense3DMT.dll
    |   |   +---Dense3DMT.lib
    |   |   +---DUOLib.dll
    |   |   \---DUOLib.lib   
    |   \---x86
    |   |   +---Dense3D.dll
    |   |   +---Dense3D.lib
    |   |   +---Dense3DMT.dll
    |   |   +---Dense3DMT.lib
    |   |   +---DUOLib.dll
    |   |   \---DUOLib.lib   
    |   +---arm
    |   |   +---libDense3D.so                  
    |   |   +---libDense3DMT.so                  
    |   |   \---libDUO.so
    |   \---x64
    |       +---libDense3D.so                  
    |       +---libDense3DMT.so                  
    |       \---libDUO.so



How can we help?  

Was this helpful? 1

Home -  Company -  Products -  Solutions -  Showcase -  Support -  Contact © Copyright 2018 – DUO3D™ Code Laboratories, Inc.