Sample Applications

This document describes the sample code that is included in the SDK and can be found in C:\Aptina Imaging\samples.

They use VS2015, and Qt 5.9.4 where applicable.  Also, for some samples VS2008/VS2010/VS2012/VS2013 solutions files are available.

NOTE: for Qt applications, you'll need to install Qt's VS2015 plugin and then in VS2015 set the following "Qt Versions" via the "Qt VS Tools" menu;

  • Name "msvc2015_64" and path to 64-bit Qt (e.g C:\Qt\Qt5.9.4\5.9.4\msvc2015_64)
  • Name "msvc2015" and path to 32-bit Qt (e.g. C:\Qt\Qt5.9.4\5.9.4\msvc2015)


Most pre-built executables are in C:\Aptina Imaging.

Each application is noted as being Command Line-based, GUI-based, or a plug-in.

  • For Command Line based applications, open a "CMD" window to run them.
  • For GUI based applications, double-click the application to run them.
  • For plug-ins, these are copied to the "Plugins" folder (usually C:\Aptina Imaging\Plugins) and then accessed via DevWare's "Plug-ins" folder.

The following sample applications are described below:

BlankQtDlg

BlankQtDlg.dll is a sample QT blank dialog plug-in built using Visual Studio C++. It is a starting point for the customization of a plug-in.

Please refer to the DevWare Plugin Development Guide for development information.

Also, the Python script "create_new_dlg.py" can be used to make a copy of the BlankQtDlg source into the DevWare directory, while making all necessary file name changes and string substitutions to create a new plug-in project.

NOTE: for Qt applications, ensure that you have a System Variable of "QTDIR" set to the location of your Qt installation files; for example, C:\Qt\Qt5.4.0\5.4\msvc2012_opengl

Csharp_ApBase_COM_Sample

Csharp_ApBaseCOM.exe is a Command Line based C# sample of using ApBase's COM interface built using Visual Studio C#. The sample performs the following actions:
1. Starts ApBase_COM and then displays the sensor name found.
2. Loads the default initialization preset.
3. Sets up the capture/save parameters.
4. Grab the frame and saves it, and verifies there were no errors.
5. Exits ApBase_COM.

Please refer to the "ApBase COM Development Guide" document for usage details, found via:
start->All Programs->Aptina Imaging->Docs->Development Guides->ApBase COM Development Guide

DirectShowSample

This sample program demonstrates how to select onsemi's device as a Directshow source filter and render its capture pin to show a preview window; it assumes Windows SDK 7.1 has been installed and the "Release" version of the "directshow" baseclasses has been compiled and located at;

C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses

Also refer to the DirectShow User Guide.

Headless

Headless.dll is a sample "headless" plug-in built using Visual Studio C++. It is a starting point for the customization of a plug-in that doesn't require a GUI.

Please refer to the DevWare Plugin Development Guide for development information.

INI_2_C

This Visual Studio C++ Command Line based application translates INI file into a C language header file or code block.
Flattens out LOAD= commands, replaces symbolic register/variable/bitfield names with register addresses/bit values.

Note; it currently does not translate Python commands.

Refer to the Ini_2_C User Guide for details.

IPTransport

IPTransportDLL is a sample Visual Studio C++ transport DLL. A transport DLL allows a user to use non-onsemi Hardware to run with Devware or any other MIDLIB application.
This sample is specific to UDP packet processing.
Note this sample requires npcap, and it is upon the user to acquire it to get the sample to compile.

For more information on creating a transportDLL please refer to the "Transport DLL Development Guide".

LabVIEW

Sample LabVIEW Applications demonstrate how to use LabVIEW with DevWare's COM interface (folder DevWare_COM_sample), ApBase COM interface (folder ApBase_COM_sample), and ApBase API interface (folder ApBase_API_sample).

The applications create a process flow with GUI, which connects to the given interface, captures images on demand, and demonstrates how to read and write sensor registers.

MatlabApBaseCOM

Sample Matlab Application demonstrates how to use Matlab with ApBase's COM interface. The code connects to ApBase through the COM interface, initializes the device, grabs and image, and converts it to RGB.

The complete set of ApBaseCOM documentation can be found here.

Python_Samples

The Python directory contains sample Python scripts that can be called from DevWare and stand-alone samples.

These examples can be executed by loading the .INI file into DevWare and executing the presets.

  • DevWare Python Introduction.ini provides various examples of Python INI file usage.
    Also, refer to DevWare Python Introduction.pdf for an introduction and examples.
  • Exposure-demo.ini shows an example of increasing and decreasing exposure from an INI preset.
  • AR0132_read_embedded.ini grabs 6 frames and prints the embedded data registers that changed.
  • Gain-exp-sweep.ini performs Gain Sweep via the optional Register Dialog "Scripts" feature, for the AR0330.
    It create creates 2 Custom Toolbars; One for "Gain Sweep" and another for "Exposure Sweep".
  • Mode-transition.ini captures images to .raw files across a mode transition.
  • QTM.ini sets a long file name for snapshot in DevWare.
  • TimingSample_py.ini is an example that creates a simple Python GUI, reads several register values and does some simple frame rate/timing calculations.
  • videocapture.ini is a Python script that implements simple video recording.

These examples are Python scripts, based on Python 3.4.
They require DevWareX to be installed before they can be run.

  • ColorPipe.py shows calling the ApBase API to do image processing as in DevWareX, on a RAW file.
  • convert_12bit_to_8 or 10bit.py converts 12 bit raw file of onsemi sensors to 8 bit and 10 bit raw files.
  • LiveStream_OpenCV.py shows calling the ApBase API from DevSuite and OpenCV to stream a live image.
  • NoiseMeasurement.py shows calling the ApBase API from DevSuite to do noise measurement for raw files and write the results to text files.
  • RenderRawVideoToWmv.py shows calling the ApBase API from DevSuite to do a video conversion from RAW image.
  • RGBIRVideoCapture.py shows calling the ApBase API from DevSuite to creates a video file from an RGB-IR sensor.
  • SimpleCapture.py shows calling ApBase API from DevSuite to do an image capture.
  • SimpleCapture_Ubuntu.py same as SimpleCapture.py except coded for Ubuntu._
  • SimpleCaptureAvi.py shows calling ApBase API from DevSuite to capture 100 frames and create an AVI video file.
  • SimpleCaptureNumpy.py shows calling ApBase API from DevSuite to capture an image and then conversion in to a Numpy array.

RawToRGB

RawToRGB is a Command Line based Visual Studio C++ application that converts a raw image to RGB using ApBase.

RecordRGBIR

This Visual Studio C++ application creates a video file from an RGB-IR sensor.
The video will have RGB images and IR images alternating.

This is an example of how to use the ApBase and RgbIR4x4Pipe libraries. The RgbIR4x4Pipe integrates with ApBase to do IR processing on images sent through the software color pipe.

A Python version can be found under "Python_Samples".

SampleAFMDLL

This is another sample Devware Plugin Dialog (using Visual Studio C++) which is used to control Auto Focus Mechanics. It allows the user to control an AF module by providing the I2C address, Min/Max positions and step sizes. Please refer to the The Dialog Plug-in API for DevWare and Auto Focus Mechanics Plugins Development Guide document for more information. Note that the DLL must reside in the C:\Aptina Imaging\Plugins directory.

SimpleCapture

SimpleCapture is a Command Line based Visual Studio C++ ApBase API application that can capture one or several continuous raw images and save in a file. Some image/sensor information will output to the console.
Usage:
SimpleCapture
SimpleCapture <num_frames>
SimpleCapture <num_frames> <width> <height>
Output Example:
Log file: ship_log0.txt
sensorName = A-1000ERS
sensorType = 65
width = 1280
height = 720
pixelBytes = 2
pixelBits = 10
bufferSize = 1843712
imageType = Bayer 10
shipAddr = 32
num_regs = 503
Saving frames to img.raw...Grabbing frame
.[done]

SimpleCaptureAVI

SimpleCaptureAVI is a Command Line based Visual Studio C++ MIDLIB application can capture one or several continuous raw images and saves them as a .avi file. Some image/sensor information will output to the stdout. Note that the application assumes the sensor has already been programmed to stream data.
Usage:
SimpleCaptureAVI
SimpleCaptureAVI <num_frames>
SimpleCaptureAVI <num_frames> <width> <height>
Output Example:
sensorName = A-1000ERS
sensorType = 65
width = 1280
height = 720
pixelBytes = 2
pixelBits = 10
bufferSize = 1843712
imageType = Bayer 10
shipAddr = 32
num_regs = 503
Opening AVI file – img.avi…
Grabbing frames
[done]

SimpleCSharp

SimpleCSharp is the C# .NET version of SimpleCapture.

SimpleOpenCL

SimpleOpenCL is a sample plugin that uses OpenCL.

SimpleQT

Simple is a GUI-based QT Visual Studio C++ ApBase application that can display image output for all onsemi sensors. It has a very simple demosaic algorithm in order to display output for Bayer only parts. It also includes examples of how to read and write registers.
Note that the application expects the width and height to match the SDAT's values of "Width" and "Height".

NOTE: for Qt applications, ensure that you have a System Variable of "QTDIR" set to the location of your Qt installation files; for example, C:\Qt\Qt5.4.0\5.4\msvc2012_opengl

TransportDLL

TransportDLL is a sample Visual Studio C++ transport DLL. A transport DLL allows a user to use non-onsemi Hardware to run with Devware or any other MIDLIB application. For more information on creating a transportDLL please refer to the "Transport DLL Development Guide"

Also, there is a Python script "create_new_transport.py" for creating a new transport based on this transport.