Contents
1 Introducing HALCON/C++ 1
1.1 Additional Sources of Information . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 A First Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Basics of the HALCON/C++ Interface 5
2.1 Calling HALCON Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 A Closer Look at Parameters . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.2 Calling Operators via Classes . . . . . . . . . . . . . . . . . . . . . . 8
2.1.3 The Tuple Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.1 Object-Oriented Approach . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.2 Procedural Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 How to Combine Procedural and Object-Oriented Code . . . . . . . . . . . . . 17
3 The HALCON Parameter Classes 19
3.1 Iconic Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.2 Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.3 XLD Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.4 Low-Level Iconic Objects . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Control Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.1 The Basic Class for Control Parameters . . . . . . . . . . . . . . . . . 34
3.2.2 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.3 Classes Encapsulating Handles . . . . . . . . . . . . . . . . . . . . . . 37
3.3 Auxiliary Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4 Creating Applications With HALCON/C++ 43
4.1 Windows NT/2000/XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 Typical Image Processing Problems 49
5.1 Thresholding an Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2 Edge Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3 Dynamic Threshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.4 Texture Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.5 Eliminating Small Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.6 Selecting Oriented Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.7 Smoothing Contours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51