MVTec Software GmbH - Release Notes for HALCON <span>24.11.2.0</span>

Release Notes for HALCON 24.11.2.0 Progress-Steady

This document provides the release notes for MVTec HALCON 24.11.2.0 Progress-Steady, as released in July2025.

Compatibility

Licenses

HALCON 24.11 Progress-Steady licenses are also valid for HALCON 24.11.2.0 Progress-Steady. In contrast, all HALCON 22.11 licenses or licenses of earlier versions must be replaced or upgraded. Please contact your local distributor.

HALCON Library

Compared to HALCON 24.11.1 Steady, many extensions have been introduced. Thus, the HALCON 24.11.2.0 Progress-Steady libraries are not binary compatible with HALCON 24.11.1 Steady or earlier versions. However, HALCON 24.11.2.0 Progress-Steady is mostly source-code compatible to HALCON 24.11.1 Steady except for the changes listed below:

HALCON Applications

Please re-compile all C, C++, or .NET programs developed with HALCON 24.11.1 Steady. The incompatibility with HALCON 24.11.1 Steady or earlier versions mainly concerns the binaries, with only few changes in the language interfaces. If you encounter problems during recompiling your programs, please check the detailed description of changes below.

Image Acquisition Interfaces

In general, HALCON 24.11.2.0 Progress-Steady and HALCON 24.11.1 Steady image acquisition interfaces are library compatible.

HALCON 24.11.2.0 Progress-Steady includes only a subset of available image acquisition interfaces. For more information, see the reference documentation of the Image Acquisition Interfaces. You can download additional interfaces from our web server.

Digital I/O Interfaces

In general, HALCON 24.11.2.0 Progress-Steady and HALCON 24.11.1 Steady digital I/O interfaces are library compatible.

HALCON 24.11.2.0 Progress-Steady includes only a subset of available digital I/O interfaces. For more information, see the reference documentation of the I/O Interfaces. You can download additional interfaces from our web server.

Extension Packages

Please re-generate your own extension packages developed with HALCON 24.11.1 Steady.

Supported Operating Systems

Windows

HALCON 24.11.2.0 Progress-Steady has been compiled for the x64-win64 platform version for Windows 10 (x64 editions), 11, Windows Server 2016, 2019, 2022 on Intel 64 or AMD 64 with SSE2 (AVX2 dispatch) processors.

Linux

HALCON 24.11.2.0 Progress-Steady has been compiled for the following Linux platform versions:

  • x64-linux platform version for Linux x86_64xspace, GLIBC_2.27, GLIBCXX_3.4.24 on Intel 64 or AMD 64 with SSE2 (AVX2 dispatch) processors
  • armv7a-linux platform version for Linux armv7axspace, Kernel with hidraw support, hard-float ABI, GLIBCXX_3.4.24, GLIBCXX_3.4.24 on Armv7-A with NEON support
  • aarch64-linux platform version for Linux aarch64xspace, Kernel with hidraw support, GLIBC_2.27, GLIBCXX_3.4.24 on Armv8-A with AArch64 support

Please refer to the Installation Guide for detailed system requirements corresponding to the different Application Binary Interfaces.

Detailed Description of Changes in HALCON 24.11.2.0 Progress-Steady

The changes in HALCON 24.11.2.0 Progress-Steady are described with respect to HALCON 24.11.1.

HDevelop

Bug Fixes

Code Export
  • The code export failed for some expressions like dictionary use or named constants when these were separated from adjacent terms only by dummy parentheses and no spaces, for example: A := (D.a)and(D.b). This problem has been fixed.

  • The C# and VB exports of an assignment from subvector to variable as in v := w.at(0) did not copy the vector data, leading to shared references. This problem has been fixed.

  • Use of multiple identical dummy output variables (e.g., some_proc(In, Out1, _, _)) could lead to unexpected behavior after code export. This problem has been fixed. Note that direct calls of exported procedures from target applications should still avoid passing the same memory address for multiple output parameters.

  • When exporting only the current procedure to a single file, the setting to include referenced external procedures was ignored. This problem has been fixed.

  • The C code export generated incorrect code for global tuple variables. This problem has been fixed.

GUI
  • The link to the tutorials of the MVTec Academy in the HDevelop start dialog did not work as expected and linked to wrong targets. This problem has been fixed.

IDE
  • HDevelop did not support dragging and dropping STEP files. This problem has been fixed.

Miscellaneous
  • The default behavior of HDevelop's file tracking mistakenly was 'Application file tracking'. This problem has been fixed. Now, the default behavior is 'System file tracking'.
    Note that 'Application file tracking' may have negative effects on HDevelop's performance. If you experience periodic moments of unresponsiveness or unusual file activity, switch to 'System file tracking' in HDevelop's preferences manually.

HDevelop Example Programs

New HDevelop Example Programs
  • hdevelop/Applications/Wafer-Inspection/inspect_wafer.hdev
New Functionality
  • The HDevelop example program hdevelop/Applications/Wafer-Inspection/inspect_wafer.hdev has been added. It shows how to use shape-based matching and the variation model to inspect wafers and detect small defects on the chips.

Bug Fixes
  • The HDevelop example program hdevelop/3D-Matching/Deep-3D-Matching/deep_3d_matching_workflow.hdev did not work correctly when setting the device to 'tensorrt' or 'openvino'. Additionally, there were some issues with the visualization of the results. These problems have been fixed.

  • The example hdevelop/Tuple/String-Operations/tuple_split_join was not visible within the HDevelop example browser. This problem has been fixed.

HDevEngine

Bug Fixes

  • Remote debugging failed when procedure variables exceeded a serialized size of 100 MB. This problem has been fixed. Note that a hard limit of 2 GB still exists.

  • Passing an empty tuple as input parameter via HDevEngine/.NET resulted in an inconsistent state, which could cause wrong behavior in rare cases, e.g., for the operator send_data. This problem has been fixed.

HALCON Library

New Functionality

3D
  • The format option 'generic_ascii' in read_object_model_3d has been extended. Now, commas are accepted as separators between the columns.

Data Code
  • The Aztec Code reader is now more robust against false-positive reads.

Identification
  • The following new GS1 Application Identifiers are now supported:

    • 03 – Identification of a Made-to-Order (MtO) trade item (GTIN)
    • 716 – National Healthcare Reimbursement Number (NHRN) - Italy AIC
    • 7041 – UN/CEFACT freight unit type
    • 8014 – Highly Individualized Device Registration Identifier (HIDRI)
System
  • On Linux, HALCON used select() to check if sockets are ready for I/O. This can lead to problems if the process uses more than 1024 open file descriptors. Now, HALCON uses poll() instead, removing this limitation.

Bug Fixes

3D
Bar Code
  • get_bar_code_result returned incorrect 'decoded_data' for some symbols of type Code 128. This problem has been fixed.

  • For all EAN/UPC codes following ISO/IEC 15420, the decodability grade and its related value reported by get_bar_code_result with the parameters 'quality_isoiec15416', 'quality_isoiec15416_float_grades', or 'quality_isoiec15416_values' could be wrong. The wrong values were returned if the critical bars and spaces were located in one of the following symbol characters: {0, 3, 4, 5, 6, 9}. This problem has been fixed.

  • In rare cases, get_bar_code_object returned scanlines without edge markers for 'scanlines_all', 'scanlines_valid', and 'scanlines_merged_edges'. This could occur if the scanlines were positioned very close together or on top of each other due to a very high number of scanlines or a very low height of the bar code. This problem has been fixed.

  • find_bar_code failed to read correct codes for the code type 'PharmaCode' if the reading direction was restricted to reverse, e.g., via set_bar_code_param(..., 'orientation', ...) and the 'quiet_zone' check was enabled. This problem has been fixed.

  • In rare cases, a successful decode of a barcode decoding attempt using the small_elements_robustness decode feature together with the quiet_zone check could lead to the unexpected error 3100 ("Wrong segmentation threshold"). This problem has been fixed.

  • In very rare cases, find_bar_code might have failed to successfully decode certain readable barcodes. The issue affected only barcodes suffering from print growth or loss. This problem has been fixed.

Calibration
  • When the execution of find_calib_object was canceled in HDevelop, HALCON could crash. This problem has been fixed.

Color Processing
  • trans_from_rgb generated unprecise rounding results for x64-win64 and x64-linux under certain conditions when using the color model 'hsv'. This problem has been fixed.

Data Code
  • The QR Code reader returned incorrect strings if Shift_JIS-encoded characters contained a \x5c character as second byte. This problem has been fixed.

  • find_data_code_2d in rare cases crashed if 'stop_after_result_num' had been set to 0. This problem has been fixed. Now, find_data_code_2d returns an error in this case.

  • The Data Matrix ECC 200 reader returned overlapping results in rare cases when executed single-threaded. This problem has been fixed.

  • In some cases, there could be issues when find_data_code_2d was called on an image with a reduced domain. This issue affected the DataMatrix, PDF417, and QR Code reader. However, only for the latter one, crashes were observed. This problem has been fixed. The new behavior can lead to slightly different results if multiple codes (more than one) are on an image. This is true even for images without a reduced domain.

  • For the Aztec Code, get_data_code_2d_results could return wrong 'quality_isoiec15415' or 'quality_isoiec29158' grades or values if either multiple codes on one image were assessed or two different standards were subsequently called on one result. This problem has been fixed.

  • For the Aztec Code reader, the parameter 'strict_model' affected the decoding result of mirrored codes: If 'strict_model' was set to 'no', actually mirrored codes could be successfully decoded even if 'mirrored' was disabled via set_data_code_2d_param. This problem has been fixed. Furthermore, the documentation now states that the 'format' setting will be ignored for the Aztec Code if 'strict_model' is set to 'no'.

  • For the Data Matrix ECC 200 reader, the 'quality_isoiec15415' evaluation via get_data_code_2d_results could crash in HALCON XL if 'quality_isoiec15415_decode_algorithm' had been set to 'reference' beforehand. This problem has been fixed.

  • In some very rare cases, the QR Code reader did not terminate and find_data_code_2d had to be aborted manually. This problem has been fixed.

  • In very rare cases, the PDF417 reader returned a corrupted candidate_xld, which could not be visualized. This problem has been fixed.

  • For the QR code, the X-dimension used for the synthetic smoothing as part of the print quality inspection (quality_isoiec15415 and quality_isoiec29158) was wrongly calculated. This problem has been fixed. This can affect different grades of the print quality inspection. Especially, codes with a small symbol size might be impacted more.

  • If 'polarity' was set to 'any' via set_data_code_2d_param, the print quality results for QR and Micro QR Code symbols may have been different compared to when the actual polarity was set in the model. This problem has been fixed. Now, the symbol refinement for the print quality inspection will also be executed if the result's process level is zero. These changes can lead to slightly different results for the print quality inspection and can affect the runtime of the print quality computation for QR and Micro QR Code symbols.

  • In some rare cases, the standard parameters for the QR Code reader did not behave as expected. Symbols, which are decodable with standard recognition, could not be decoded with enhanced recognition. This problem has partially been fixed. Now, these cases happen less frequently.

  • In rare cases, the QR Code reader returned the error 6006 ("Tmp-memory management: could not find memory element") in find_data_code_2d if timeouts were enabled. This problem has been fixed.

  • The print quality assessment for Aztec Codes via get_data_code_2d_results could crash or run into undefined behavior if the used result needed a 'module_gap' unequal 'no' to be successfully decoded. This problem has been fixed.

  • In rare cases, get_data_code_2d_results returned wrong start/stop pattern grades of the print quality inspection of PDF 417 codes. This problem has been fixed.

  • For Data Matrix ECC 200 symbols, get_data_code_2d_results returned random values for 'structured_append' if queried for unsuccessful candidates. This problem has been fixed. Now, it always returns an empty tuple for 'structured_append' if queried for an unsuccessful candidate. This is true independent of the symbol type. I.e., the behavior is now consistent for Data Matrix ECC 200, QR Code, Micro QR Code, Aztec Code, and DotCode.

Deep Learning
  • The serialization strategy 'best' has been extended to support a new behavior, which allows models to be continuously saved during training even when validation performance is equally good compared to the last saved model. The new behavior can be enabled using the create_dl_train_param procedure and its GenParamName and GenParamValue parameters. A minimal working example can be found in the documentation of the create_dl_train_param procedure.

  • While training neural networks with the procedure train_dl_model, the evaluation of the model after a specific epoch could happen a single iteration too late. This problem has been fixed.

  • During the training of the neural networks, the learning rate was not displayed correctly when the learning rate changed. This problem has been fixed.

  • fit_dl_out_of_distribution in some cases leaked memory if it failed because the model could not correctly be applied to the samples in the dataset. This problem has been fixed.

Filter
  • sqrt_image, dots_image, sin_image, cos_image, and tan_image were not thread-safe for byte images when executing with non-compute device and enabled AOP. In very are cases, this could result in some false pixels. This problem has been fixed.

  • harmonic_interpolation returned wrong results in rare cases when automatic operator parallelization was activated. This problem has been fixed.

  • eliminate_sp had a rounding issue, leading to results that were off by one. If the upper value bound of the image type was exceeded, this could also lead to defined overflow for BYTE and UINT2. The problem has been fixed.

  • Calling phase_correlation_fft with an invalid number of input objects could lead to memory corruption. This problem has been fixed.

  • In rare situations, harmonic_interpolation could generate NaN values. This problem has been fixed. Note that this fix can also affect the operators get_structured_light_object, calibrate_sheet_of_light, and some shape_model operators, since they share certain critical parts.

  • convol_image led to an error for very large filter sizes and mirror margin. This problem has been fixed.

  • convol_image defaulted to the non-separable SIMD implementation (SSE2, AVX) when SIMD was available for real images and all separable masks except the mirrored type. Now, it uses the separable implementation instead.

Graphics
  • disp_text and dev_disp_text threw an error whenever the CoordSystem was set to 'image' and the parameters 'rotate_row' or 'rotate_col' were used together with their textual values, e.g., 'text_left' or 'text_top'. This problem has been fixed.

  • Small contours disappeared in HALCON windows if zoomed out. This problem has been fixed.

  • On some modern Linux systems, HALCON reported that no OpenGL is available even though the system had OpenGL support. This problem has been fixed.

Identification
  • get_bar_code_result crashed if 'gs1_lint_passed' was queried for a result other than the first result. The variable inspect window in HDevelop was affected as well. This problem has been fixed.

  • The Aztec reader crashed in rare cases. This problem has been fixed.

Images
  • add_image_border returned an error when a tuple of type mixed was passed as 'Size'. This problem has been fixed. Now, tuples of type mixed that only contain entries of type integer are handled correctly.

Matching
OCR
  • get_text_model_param always returned the value 'false' for the parameter 'dot_print_tight_char_spacing'. This problem has been fixed. Now, the actual setting ('true' or 'false') is returned.

Parallelization
  • area_center could return inconsistent results when called with a tuple of empty input regions containing fewer regions than the number of threads used by the automatic operator parallelization. This problem has been fixed.

Region
  • gen_checker_region did not check the ranges for the input parameters correctly. This problem has been fixed.

  • In rare cases, closest_point_transform crashed if the output image size was set to one. This problem has been fixed.

  • In rare cases, closest_point_transform returned incorrect distances for the last output image row if Foreground was set to 'false'. This problem has been fixed.

  • inner_circle returned the error 3513 ("Internal error: number of chords too big for num_max") if the input region consisted only of short horizontal chords. This also affected region_features and select_shape with the corresponding features. This problem has been fixed.

  • polar_trans_region_inv previously restricted the input region to lie within the input virtual image to be converted. This restriction has been removed.

System
  • set_system ('disabled_operators') did not actually disable any operators. This problem has been fixed.

  • On Windows systems, using the get_serial_param and set_serial_param operators may have resulted in a crash under certain conditions. This problem has been fixed.

Tools
Transformation
  • For affine_trans_image, the parameter 'AdaptImageSize' wrongly accepted string values other than 'true' and 'false'. In this case, the value 'false' was assumed. This problem has been fixed. Now, the operator returns an error if another value than 'true' or 'false' is used.

Tuple
  • Calling tuple_sort on a mixed tuple with the first element being a handle returned error 6004 ("Tmp-memory management: Call freeing memory although nothing had been allocated") instead of 1201 ("Wrong type of control parameter 1"). This problem has been fixed.

HALCON/C++

Bug Fixes

  • HALCON 24.11 introduced a regression in the behavior of parallel HTuple accesses from multiple threads. Although not officially supported as per Programmer's Guide, section 6.2.1, this problem has been fixed.

  • The member methods HHandle::TupleIsSerializable and HHandle::TupleSemType of the HALCON C++ language interface did not pass their parameters to HALCON correctly and thus did not return correct results. This problem has been fixed.

HALCON Variable Inspect

Bug Fixes

  • Sometimes the icons in HALCON Variable Inspect did not adapt to theme changes. This problem has been fixed.

  • HALCON Variable Inspect did not display the image coordinates and the gray value while hovering over it. This problem has been fixed.

Image Acquisition Interfaces

The latest information about new interface revisions and newly supported image acquisition devices can be found on MVTec's web server. Please refer to the release notes within the documentation of the individual image acquisition interfaces for information about improvements, bugfixes, or whether a new revision of the corresponding device driver is required.

Miscellaneous

  • open_framegrabber leaked memory if it failed within the Image Acquisition Interface. This problem has been fixed.

Digital I/O Interfaces

The latest information about new interface revisions and newly supported digital I/O interfaces can be found on MVTec's web server. Please refer to the release notes within the documentation of the individual digital I/O interfaces for information about improvements, bugfixes, or whether a new revision of the corresponding device driver is required.

Documentation

Programmer's Manuals

  • In the PDF version of the Programmer's Guide, several class names were not shown, mainly in the HDevEngine sections. This problem has been fixed.

Reference Manual

  • The documentation for shape-based matching did not mention that subpixel refinement does not update scores. This problem has been fixed.

  • The reference manual entry of get_deep_matching_3d_param stated that angles must be passed in radians instead of degrees. This problem has been fixed.

  • The documentation of the parameter 'symbol_shape', for example, settable via set_data_code_2d_param, was misleading. The documentation referred to the module shape instead of the symbol shape. This problem has been fixed.

  • The reference manual did not mention that for the Micro QR Code, the parameter 'position_pattern_min' is valid and settable via set_data_code_2d_param as well as gettable via get_data_code_2d_param. This problem has been fixed.

  • The reference manual entries of tile_images, tile_channels, and tile_images_offset have been clarified, now mentioning that all channels must be of the same image type.

Release Documents

  • There are now separate HALCON 24.11.1 release notes for HALCON Steady customers.

Installation

  • The files HalconUninst.dll and hcheck_cpu.exe in misc/x86-win32 were not used anymore in newer versions of HALCON and have been removed from the file set, including the containing folder.

  • The installation of the package "Deep Learning Core" erroneously did not depend on the installation of "Microsoft Visual C++ Redistributable". This problem has been fixed.

Licensing

  • The number of failed license rechecks accessible via get_system('failed_license_rechecks') was not counted correctly for all license types. This problem has been fixed.

  • On Windows, if a process with elevated privileges was the first process to use HALCON, other non-privileged processes from the same login session could not use the same HALCON license. This problem has been fixed.

  • hhostid has reported the same version number since HALCON 13.0.2. This problem has been fixed. Now, hhostid reports the version number of the HALCON version for which it was compiled.

  • hinfo did not explicitly release a floating license on Windows, which could block a floating license until a timeout occurred on the License Server. This problem has been fixed.

  • When diagnosing license issue, hinfo ignored the -d command line flag. This problem has been fixed.

Third-Party Libraries

  • HALCON now uses version 8.20a of the CodeMeter Runtime.

  • The OpenSSL library has been updated to version 3.0.16.

  • mimalloc has been updated to version 2.2.4.

Follow this link to read about the changes of previous HALCON versions.