10 How to Develop Applications with HALCON
you typically do not need to modify the rest of the application but only to compile and link the application
again.
• Because the vision part is separated from the general code, it can easily be executed in a stand-alone manner.
Furthermore, it can be given to others without the need to pass the whole project. In the case of support
questions, the HDevelop program with one or more images can quickly be sent to the distributor.
• Finally, a reuse for other architectures like Linux can easily be achieved because HDevelop runs in exactly
the same manner on multiple operating systems.
For basic information on the prototyping with HDevelop see section 2.2 on page 16. How to export code from
HDevelop is explained in the HDevelop User’s Guide in chapter 10 on page 325. A brief introduction to using
HALCON in a programming environment can be found in section 2.3 on page 17. How to use HDevEngine is
explained in the Programmer’s Guide in part VI on page 129. For using a programming environment like Microsoft
Visual C++, see the relevant Microsoft documentation.
Note that in both cases (HDevEngine or export), the application contains “only” the HALCON functionality –
HDevelop’s powerful development tools like the assistants or other GUI elements cannot be accessed from a
programming language.
2.1 A Look Under the Surface of HALCON: Architecture and Data
Structures
HALCON’s architecture, data structures, and internal mechanisms were developed according to the philosophy
that they should be
1. efficient
2. open
3. standardized
4. self-describing
Efficient means that the execution time of each HALCON operator is as short as possible. Furthermore, the
operator design has been made such that combinations that are standard sequences or more complex tasks remain
efficient.
The open architecture is important in two respects: First, you can use HALCON from many different programming
languages. Passing external data to HALCON and accessing internal data of HALCON is also supported. Finally,
there are transparent interfaces to integrate user-defined operators and non-standard image acquisition devices.
This open architecture allows, e.g., a simple update to a new version of an image acquisition interface without
changing the installation of HALCON.
Standardized means that the signatures, naming, and usage of operators and data structures follow strict rules. This
allows a quick learning combined with few errors.
Finally, HALCON provides detailed information about each operator and their parameters not only in the docu-
mentation but also online via specialized operators.
HALCON’s basic architecture is depicted in figure 2.2. The main part is the image processing library, which
consists of a huge number of operators. You can also develop your own operators in form of a so-called Extension
Package. You use the operators in your application via the so-called language interfaces like HALCON/C++.
These are libraries which allow a direct use of the operators in the typical programming style of the different
programming languages.
For the access of image acquisition devices, HALCON provides a common interface, the so-called Image Acqui-
sition Interface. It allows to use quite different acquisition devices in a common way. The libraries containing the
device-specific implementations are loaded dynamically when needed.
Similarly, I/O devices are accessed through device-specific I/O device interfaces. These interfaces allow to access
different I/O devices in a common way. The libraries are loaded dynamically when needed.
Below, we take a closer look at HALCON’s operators and data structures.