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.
Contents
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:
The operators get_handle_param and get_handle_tuple no longer return values for handles of type compute_device. To obtain the corresponding values, use the operator get_compute_device_param instead.
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
set_deep_matching_3d_param did not raise an error if a telecentric camera was set. This problem has been fixed.
apply_deep_matching_3d did not handle input images correctly, which might have led to wrong results. This problem has been fixed.
apply_deep_matching_3d could crash in some cases if it was interrupted in HDevelop using F9, or from another thread using interrupt_operator. This problem has been fixed.
read_deep_matching_3d could crash in rare cases if the filename pointed to a directory instead of a file. This problem has been fixed.
apply_deep_matching_3d could crash in rare cases if objects were very close to the camera. This problem has been fixed.
set_deep_matching_3d_param with GenParamName 'camera_pose N' only worked correctly for poses of type 0. Pose types 1 to 13 did not work correctly. This problem has been fixed.
xyz_to_object_model_3d could return the error 3513 ("Internal error: number of chords too big for num_max") when the images had a reduced and non-rectangular domain. This problem has been fixed.
find_deformable_surface_model, find_surface_model, find_surface_model_image, and register_object_model_3d_pair in very rare cases leaked memory when their execution was canceled or interrupted. This problem has been fixed.
gen_binocular_rectification_map and its internal call in set_stereo_model_image_pairs in rare cases returned very large translations in the rectified poses for telecentric cameras, sometimes resulting in numerical artifacts in a later reconstructed point cloud. This problem has been fixed.
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
find_local_deformable_model, find_planar_calib_deformable_model, and find_planar_uncalib_deformable_model could miss matches close to the image border in case these matches were not completely within the image, but the search had been run with 'border_shape_models' and a reduced image domain. This problem has been fixed.
find_ncc_model and find_ncc_models can return too high scores even if no model instance is visible in the search image, as they suffer from numerical imprecisions in case of large top-levels (which usually means that the top-level is a very low pyramid level). While this problem could still occur for very large top-levels, its impact has been moderated.
find_ncc_model and find_ncc_models in very rare cases suffered from inconsistencies, which may have led to wrong matches. This problem has been fixed.
find_shape_model, find_shape_models, find_scaled_shape_model, and find_scaled_shape_models did not find matches for anisotropically scaled models even if the scale ranges allowed it. This problem has been fixed.
find_generic_shape_model, find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, and find_aniso_shape_models returned slightly inaccurate matching results in rare cases where subpixel refinement was used. This problem has been fixed.
find_ncc_model, find_ncc_models, find_component_model, find_local_deformable_model, find_planar_calib_deformable_model, and find_planar_uncalib_deformable_model returned slightly inaccurate matching results in rare cases. This problem has been fixed.
train_generic_shape_model, create_shape_model, create_scaled_shape_model, create_aniso_shape_model, and determine_shape_model_params used the same metric and min_contrast value for step size estimations, which could lead to suboptimal step sizes for the given shape model. This problem has been fixed. Now, the user-set metric and min_contrast values are used for step size estimations.
find_generic_shape_model, find_shape_model, find_shape_models, find_scaled_shape_model, find_scaled_shape_models, find_aniso_shape_model, and find_aniso_shape_models could miss evaluating all points in case of metric ignore_global_polarity, which led to slightly off matches. This problem has been fixed.
The following HDevelop examples displayed the origin of the corresponding model instance incorrectly for a found match:
determine_rotation_almost_rotationally_symmetric_objects, find_mirror_dies, determine_tilt_slant_photometric_stereo, find_generic_shape_model_xld_workflow, train_generic_shape_model_sample_workflow
This problem has been fixed. Optionally, now a new procedure dev_display_shape_matching_instances_model_origin can be used for the visualization.find_shape_models, find_scaled_shape_models, and find_aniso_shape_models performed the search using incorrect parameters if the same model was passed multiple times with different search parameters. This problem has been fixed.
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
create_rectification_grid created PostScript output with an incorrect bounding box. This problem has been fixed.
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.
Release Notes of Previous HALCON Versions
Follow this link to read about the changes of previous HALCON versions.