This document provides the release notes for MVTec HALCON 18.104.22.168 Steady, as released in July 2021.
HALCON 20.11 Steady licenses are also valid for HALCON 22.214.171.124 Steady. In contrast, all HALCON 18.11 licenses or licenses of earlier versions must be replaced or upgraded. Please contact your local distributor.
HALCON 126.96.36.199 Steady is fully compatible with HALCON 20.11 Steady and HALCON 20.11.1 except for the changed behavior of some operators owing to bug fixes. Compared to HALCON 18.11, many extensions have been introduced. Thus, the HALCON 20.11 Steady libraries are not compatible with HALCON 18.11 or earlier versions. In detail, please note the following incompatibilities with respect to HALCON 20.11.1 Steady:
- Due to changes in merging scanlines, find_bar_code might return different results if the barcode parameter 'merge_scanlines' is set to 'true'. More information.
- The orientation returned by text_line_orientation can differ slightly from previous results. More information.
- Due to the bugfix in trans_to_rgb for the color space 'yiq' and image type 'uint2', the gray values of the images returned by the operator can slightly differ from the previous results. Furthermore, the runtime of the operator for color space 'yiq' and image type 'uint2' has increased. For example, for images of size 750x500, the runtime has increased by roughly 10-15%. More information.
Please re-compile all C, C++, or .NET programs developed with HALCON 20.11.1. The incompatibility with HALCON 20.11.1 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, image acquisition interfaces of HALCON 188.8.131.52 Steady are library compatible to those of HALCON 20.11 Steady and HALCON 20.11.1, as well as HALCON 18.11.x.
HALCON 184.108.40.206 Steady includes only a subset of available image acquisition interfaces. Image acquisition interfaces that are included are: DirectFile, DirectShow, File, GenICamTL, GigEVision2, GStreamer, USB3Vision, and Video4Linux2. You can download additional interfaces from our web server.
Digital I/O Interfaces
In general, digital I/O interfaces of HALCON 220.127.116.11 Steady are library compatible to those of HALCON 20.11 Steady and HALCON 20.11.1, as well as HALCON 18.11.x.
HALCON 18.104.22.168 Steady includes only a subset of available digital I/O interfaces. Digital I/O interfaces that are included are: Linux-GPIO, OPC_UA, and Hilscher-cifX. You can download additional interfaces from our web server.
Extension packages developed with HALCON 20.11 Steady or HALCON 20.11.1 can be used with HALCON 22.214.171.124 Steady without further action. Extension packages developed with HALCON 18.11 or earlier versions must be re-generated. Note that the old makefiles for HALCON/C++ must be adapted according to the sample makefile under extension_packages/halconuser.
Further Compatibility Information
- When using legacy handle mode in HALCON/.NET, casting a HTuple containing a handle to bool will no longer raise an exception. Instead, it will behave the same as if the tuple contained the numeric handle value. The new behavior is consistent with how legacy code would behave prior to 18.05 but different to how the legacy mode worked from 18.05 to 20.11 (on 64-bit architectures). More information.
Supported Operating Systems
HALCON 126.96.36.199 Steady has been compiled for the x64-win64 platform version for Windows 7/8.1/10 or Windows Server 2008 R2/2012 R2/2016/2019 x64 Edition on Intel 64 or AMD 64 processors.
HALCON 188.8.131.52 Steady has been compiled for the following Linux platform versions:
- x64 platform version for Linux x86_64, GLIBC_2.17, GLIBCXX_3.4.21, on Intel 64 or AMD 64 processors
- armv7a platform version for Linux armv7a, Kernel with hidraw support, hard-float ABI, GLIBC_2.17, GLIBCXX_3.4.21 on Armv7-A processors with NEON support
- aarch64 platform version for Linux aarch64, Kernel with hidraw support, GLIBC_2.17, GLIBCXX_3.4.21 on AArch64 processors
Please refer to the Installation Guide for detailed system requirements corresponding to the different Application Binary Interfaces.
HALCON 184.108.40.206 Steady has been compiled for the x64 platform version of macOS 10.15 on Intel 64.
Detailed Description of Changes in HALCON 220.127.116.11 Steady
The changes in HALCON 18.104.22.168 Steady are described with respect to HALCON 20.11.1 Steady.
- HDevelop now provides a new “canvas” window, which can be used to group and organize graphics windows. By default, HDevelop now start with a canvas window. For more information about its functionality, see the HDevelop User's Guide.
- The usability of floating windows has been improved. Now, it is possible to minimize floating windows or to place them behind the main application. Additionally, shortcuts are provided to bring all floating windows in front of the application conveniently, or to bring the main window in front of all floating windows.
- As it considerably increases the options to organize the HDevelop working environment, it is now possible to hide docked windows in a sidebar.
- The new option “Origin of coordinates” (Edit > Preferences > General Options) allows users to choose the origin for floating windows that are opened via script.
- The 'Cascade Floating Windows' menu command has been improved. Now, the origin of the first cascading window is set according to “Origin of coordinates”.
- The icon indicating a wrong configuration in the image acquisition assistant of HDevelop has been improved.
- The usability of the context menu of the graphics window has been improved. The actions for setting the resizing behavior of content displayed in the graphics window have been added to the visualization menu.
- The usability of the example browser has been improved. Now, if the example browser is docked, it stays open when selecting an example.
- The positioning of floating windows opened interactively has been improved. Now, windows opened for the first time are opened relative to HDevelop instead of relative to screen coordinates.
- Now it is possible to use HDevelop with software rendering under Windows 64-bit. To enable this feature, enter set QT_OPENGL=software on the command line and start HDevelop. Be aware that this is only a fallback if the graphics card's capabilities are not available.
- Deleting individual calibration images in the Calibration Assistant, followed by adding new images could yield incorrect calibration results as not all images were used in the calibration process. This problem has been fixed.
- The “Interface Library” field of the image acquisition assistant did not change its background color when switching between dark and light theme. This problem has been fixed.
- Parameter names on the Parameter tab of the image acquisition assistant were difficult to read when using the dark theme. This problem has been fixed.
- The matching assistant could flicker or freeze when used in combination with a floating graphics window. This problem has been fixed.
- Closing one of HDevelop's assistants via its file menu left an empty window. This problem has been fixed.
- When using the dark theme, some UI elements of the assistants did not appear well, making some texts difficult to read. This problem has been fixed.
- dev_open_tool had some minor problems. These problems have been fixed.
- If an output variable for an operator call was also used in an expression passed as input parameter (e.g., concatenation), the export to C# and VB.net did not work. This problem has been fixed.
- A file selection dialog in HDevelop's Export Language dialog still offered “C++ (HALCON-10 - legacy)” as file format even though it is no longer supported. This problem has been fixed.
- On macOS, the C++ code exported by HDevelop could crash on program exit. This problem has been fixed.
- HDevelop's variable inspection windows did not use the selected 'Values and Parameters' font when opened. This problem has been fixed.
- On Windows systems, HDevelop did not correctly remember its initial geometry when maximized. After closing and restarting, HDevelop filled the entire screen when changing from a maximized to a non-maximized state. This problem has been fixed. Now, HDevelop returns to the last size and position before maximizing, regardless whether that happened during the current or a previous session.
Note that this functionality is not available on Linux systems. There, HDevelop always returns to a default size and position.
- Some variable inspect windows could have been closed programmatically although they had been docked. This problem has been fixed.
- The keyboard focus was lost if the user executed a HDevelop script with floating (graphics) windows. This problem was fixed by minimizable windows.
- The height of the rows in the Example browser's result list was not updated when the font size was changed. This problem has been fixed.
- HDevelop's Edit Procedure Interface did not display the path to the selected .hdvp/.dvp procedures in the Directory selection box. This problem has been fixed.
- For vectors, HDevelop's variable inspect window did not use the 'Values and Parameters' font as expected. This problem has been fixed.
- Selecting windows using the menu did not activate them. This problem has been fixed.
- The iconic select dialog (accessible from the variable window when displaying content for iconic image arrays) could get lost behind the main window and also did not reappear when displaying content for another variable. This problem has been fixed. In addition, the dialog is now a standard window, which appears in the window list, and is dockable.
- On some platforms, the program editor did not have the input focus on startup. This problem has been fixed.
- The Graphics window and other windows could have been opened out of screen depending on display setting. This problem has been fixed.
- Clicking on the activate or deactivate program line actions sometimes did not work as expected. This problem has been fixed.
- If a procedure interface dialog had been added to the docking environment during the previous session, and then this dialog was used in the new session, HDevelop could crash during a restart. This problem has been fixed.
- Very large images caused HDevelop to slow down significantly when editing. This problem has been fixed.
- HDevelop crashed when either a zoom window received keyboard input or the content of a zoom window was moved by dragging. This problem has been fixed.
- Docking some widgets to the main application could cause a change in the geometry of the main application. This problem has been fixed.
- Selecting the last changed variable resulted in a visually unreadable value in the variable window. This problem has been fixed.
- In certain cases, HDevelop's autocompletion obscured the line that was currently being edited. This happened if a procedure was running in a subthread during editing. This problem has been fixed.
- If windows of the same type were docked next to each other, shortcuts sometimes did not work. This problem has been fixed.
- Double-clicking in the HDevelop graphics window could result in incorrect coordinates when using interactive operators like get_mposition. This problem has been fixed.
- Closing a docked window could cause resizing another docked window to crash the application. This problem has been fixed.
- The text color of HDevelop's dark theme only provided little contrast against yellow or red background, which is used to indicate an invalid input. This problem has been fixed. Now, the text color in combination with such backgrounds is black, regardless of the chosen theme.
- The minimum size of the preferences dialog was too big. This problem has been fixed.
- dev_open_tool, dev_show_tool, and dev_set_tool_geometry did not work or did not work correctly for HDevelop's help window. This problem has been fixed.
- Opening a window on a screen with different desktop scaling than the screen of the main application could lead to unexpected window geometries. Further, opening a window on a screen other than the main screen with scaling different from 100% resulted in increasing window sizes. These problems have been fixed.
- When using the dark theme, warning text in HDevelop's operator window sometimes was not readable. This problem has been fixed.
- The graphics window was sometimes not updated if the variable window was located in the sidebar. This problem has been fixed.
- The table of contents in the tree view of HDevelop's help window differed from the table of contents of the documentation's start page. This problem has been fixed.
- Replacing asterisks at the beginning of a program line with the Find/Replace dialog of HDevelop or replacing text at the beginning of a program line with asterisks could lead to unexpected results. In the worst case, HDevelop could freeze. This problem has been fixed.
- When renaming a procedure parameter, expressions that used the procedure parameter to generate a tuple sequence were not correctly adapted. This problem has been fixed.
- Outdated tips of the day have been updated or removed.
HDevelop Example Programs
New HDevelop Example Programs
- The HDevelop example hdevelop/explore_halcon.hdev threw an exception if no Deep Learning license was available. This problem has been fixed by adding a license check to the example.
- Failing to initialize a vector output parameter of a procedure caused the return values for all subsequent output parameters to be ignored as well if the call was made using par_start. This problem has been fixed.
- Initializing HDevEngine in a multi-threaded context could cause a crash in rare cases. This problem has been fixed.
- The subpixel bar code reader has been improved. The decoding rate of find_bar_code can increase by up to 50 percent for codes that meet the requirements of the subpixel bar code reader.
- The ONNX version has been updated to 1.8.1. The ONNX reader of read_dl_model now supports ONNX operator set versions 12 and 13.
- set_dl_model_param and get_dl_model_param have been extended with the parameter 'meta_data'. This parameter allows setting user-defined metadata (e.g., model author and version), which will be stored along with the model.
- apply_deep_ocr was extended with two additional keys in the result dictionary for the modes 'auto' and 'detection': 'word_boxes_on_image' and 'word_boxes_on_score_maps'. The library procedure dev_display_deep_ocr_results can now automatically display the resulting oriented word boxes on the preprocessed images or on the score maps images based on the size of the procedure's input image. A new procedure dev_display_deep_ocr_results_preprocessed was added to the library to display the results on the preprocessed images directly. The example hdevelop/OCR/Deep-OCR/deep_ocr_workflow.hdev was adapted to use the new procedure.
- The GPU memory consumption of the the deep-learning models has been optimized for the model runtime 'gpu' in case only inference is done and the model parameter 'optimize_for_inference' is not set to 'false'.
- The filtering mechanism of query_available_dl_devices has been improved. Now, all values that that can be retrieved with get_dl_device_param and are not handle-valued can be used for filtering.
- HALCON has been extended with the operator optimize_dl_model_for_inference, which optimizes a DL model for inference on a certain hardware device and for a certain model precision.
Further, HALCON has been extended with an operator set_dl_device_param, which can be used to set device-specific parameters for a device. To see which parameters can be set for a device, use the operator get_dl_device_param with 'settable_device_params'.
The operator get_dl_device_param has been extended with a set of parameters that supports the usage of the new operator optimize_dl_model_for_inference:
Furthermore, the operator get_dl_device_param has been extended with the parameter 'settable_device_params', which returns a dictionary containing all device-specific parameters that can be set with the new operator set_dl_device_param.
The operator get_dl_model_param has been extended with the following parameters, which return information about the model's precision:
- The NVIDIA CUDA Deep Neural Network library (cuDNN) has been updated to the version 8.2.0. HALCON ships and supports this library for the two CUDA versions 10.2 and 11.1. The libraries can be found in the cuda10_2 and cuda11_1 subdirectories of the thirdparty library directory.
This cuDNN upgrade fixes a CPU memory leak, which occurred in apply_dl_model and train_dl_model_batch using RTX-2080 and RTX-3080 GPUs. Further, the update improves the performance of inference and training on RTX-3080 GPUs, as well as the performance of the delivered model pretrained_dl_classifier_alexnet.hdl on several GPUs.
- HALCON now uses standard C99 data types instead of HALCON-specific data types where applicable. The old data types are still available for backwards compatibility with source code for previous versions.
- binocular_disparity_ms, binocular_distance_ms, and reconstruct_surface_stereo with 'disparity_method' set to 'binocular_ms' returned incorrect results in rare cases. This problem has been fixed.
- reconstruct_surface_stereo crashed on images with full domain in rare cases. This problem has been fixed.
- triangulate_object_model_3d with 'Method' set to 'greedy' crashed in very rare cases. This problem has been fixed.
- set_stereo_model_image_pairs could lead to a crash if the specified 'From' and 'To' camera pair had different image sizes. This problem has been fixed.
- binocular_disparity, binocular_distance, and reconstruct_surface_stereo for a stereo model with 'disparity_method' set to the default 'binocular' may have crashed in rare cases when applied to large images. This problem has been fixed.
- pose_compose, pose_invert, serialize_pose, write_pose, set_metrology_model_param, create_calib_descriptor_model, create_planar_calib_deformable_model, create_planar_calib_deformable_model_xld, refine_surface_model_pose, refine_surface_model_pose_image, and set_surface_model_param did not raise an error when an input pose contained an invalid pose type in its last entry. This problem has been fixed. Now, the operators return the error 8427 ("Wrong type in Pose (rotation / translation)").
- gen_sphere_object_model_3d and gen_sphere_object_model_3d_center created spheres with wrong radii when multiple poses or centers and only a single radius were passed. This problem has been fixed.
- segment_object_model_3d could crash if the input 3D object model contained triangles that were topologically invalid. This problem has been fixed. Now, the operator returns an error when encountering such a topology.
- When using set_surface_model_param to set the 'self_similar_poses' of a surface model that was previously serialized and de-serialized (or written and read), HALCON could crash. This problem has been fixed.
- simplify_object_model_3d in rare cases generated meshes that subsequently could not be segmented by segment_object_model_3d but raised an error. This problem has been fixed.
- read_object_model_3d sometimes raised an error for .ply files written by write_object_model_3d if the 3D model contained point attributes whose names only differed by a preceding '&'. This problem has been fixed.
- read_object_model_3d returned the error 0005 ("Operator failed (FAIL)") if the names of PLY properties were not unique. This problem has been fixed. Now, read_object_model_3d returns the error 9510 ("Invalid 3D file") with the extended error code "PLY: 'PROPERTY' name not unique".
- When in training mode, find_bar_code sometimes returned results that could not be decoded with the trained parameter afterwards. This problem has been fixed.
- The operator get_bar_code_result in rare cases returned wrong values for 'status', 'status_id', and 'status_small_elements_robustness'. This problem has been fixed.
- In very rare cases, find_bar_code could have caused a deadlock if the barcode parameter 'merge_scanlines' was set to 'true'. This problem has been fixed. Note that this change affects the compatibility. Read more.
- In find_bar_code, the training of the parameter 'barcode_width_min' could lead to wrong results when training multiple different images. This problem has been fixed.
- In rare cases, find_bar_code could misread certain GS1 Databar Limited barcodes, resulting in a slightly wrong symbol region and an incorrectly decoded string. This problem has been fixed.
- calibrate_cameras sometimes unnecessarily returned the error 8497 ("Calibration failed: Please check your input data and calibrate again!") for multiview setups containing three or more telecentric line-scan cameras. This problem has been fixed.
- The calibration plate description (.cpd) files differed slightly from the files generated using create_caltab. This problem has been fixed.
- merge_regions_line_scan may have crashed in rare cases with empty output regions. This problem has been fixed.
- add_sample_class_train_data wrongly handled mixed float and integer values inside the parameter 'Features'. This problem has been fixed.
- trans_to_rgb with color space 'yiq' could return wrong gray values in rare cases for input images of type 'uint2'. This issue has been fixed. Note that this change affects the compatibility. Read more.
- When used with large images of more than two gigapixels, some OpenCL operations (arithmetic image operations like abs_diff_image) were very slow or returned an error. This problem has been fixed.
- find_data_code_2d in rare cases could not find and decode mirrored Data Matrix ECC200 codes if the parameter 'mirrored' was set to 'yes' but could if it was set to 'any'. This problem has been fixed.
- For mirrored Data Matrix ECC200 codes with a square shape and multiple data fields, get_data_code_2d_objects returned wrong results for 'module_1_rois' and 'module_0_rois' in some cases. This problem has been fixed.
- HALCON did not cope well with QR codes encoded in local encoding where a single character was split between two decoding modes. This problem has been fixed.
- read_dl_model has been improved to read in more complex ONNX models with forked graphs.
Further, the error messages of read_dl_model have been improved in case ONNX models with nodes that miss an input or output node are read in. Instead of “Graph nodes should have inputs” and “Graph nodes should have outputs”, the error messages “Graph node <name> should have inputs” and “Graph node <name> should have at least <num of outputs> outputs” are returned, respectively.
- apply_deep_ocr falsely accepted images of type 'real', which cannot be processed correctly. This problem has been fixed. Now, apply_deep_ocr supports byte images only.
- The procedure calculate_evaluation_measures could calculate inaccurate overall results for the evaluation_type 'detection', instance_type 'rectangle2', and measures 'soap' or 'all' if no predictions were present for one class. This problem has been fixed.
- The extended error message “Input layer has wrong shape or type” sometimes was misleading. This problem has been fixed. Now, the message is raised for shape and type errors only.
- The accuracy of the Deep OCR detection component was reduced when the model size was not evenly divisible by 32. This problem has been fixed. Now, the model size is always rounded to the next multiple of 32 internally.
- For the deep learning model pretrained_dl_edge_extractor.hdl and the runtime 'gpu', the way of selecting the most suitable algorithm for the deconvolutional layers has been improved. This may lead to slight variations of the inference and training speed depending on the GPU hardware used.
- read_dl_model crashed when reading the inception_v1 model from the ONNX model zoo. This problem has been fixed. Now, the operator supports the model.
- The procedure dev_display_classification_evaluation_class_pie_chart sometimes used an unexpected font. This problem has been fixed.
- If the procedure preprocess_dl_samples was called with the same DLPreprocessParam dictionary in multiple threads, a race condition occurred. This problem has been fixed.
- The following HDevelop DL examples have been adapted to use the maximum batch size that can be used in case of GPU usage:
For the following HDevelop DL detection example, the usage of the maximum batch size in case of GPU usage has been removed:
- Specifying the parameter 'check_params' as 'true' in a DL preprocessing dictionary raised an error in the procedure preprocess_dl_samples. This problem has been fixed.
- For deep learning classification models, the procedure create_dl_train_param did not correctly use the measure 'topK_error' for K > 1 with respect to the later serialization of the best model within the procedure train_dl_model. This problem has been fixed.
- Sometimes a message claimed that a deep learning model did not support float16 precision after calibration. Instead, the message should have mentioned that the selected device cannot support this precision. The error message for this problem has been fixed.
- After using the operator optimize_dl_model_for_inference it was possible to set the calibrated model to a runtime or device for which it was not calibrated by using the operator set_dl_model_param. This problem has been fixed.
- Trying to change the 'recognition_image_height' parameter of a Deep OCR handle did not raise any error. This problem has been fixed. Now, the error 1302 ("Wrong value of control parameter 1") is raised.
- The operators gen_dl_model_heatmap, serialize_dl_model, write_dl_model, and optimize_dl_model_for_inference were not reentrant. This could lead to a crash if the model was used by more than one thread. This problem has been fixed.
- The procedure train_dl_model did not handle evaluation measures correctly that are not based on the top-k error. The visualization and evaluation summary was incorrect. This problem has been fixed.
- After reading a deep-learning model, setting a very big model batch size, and finally setting the model runtime to 'cpu', a crash could happen. This problem has been fixed.
- The operator threshold internally truncates the input parameters 'MinGray' and 'MaxGray' from double precision to single precision floating point values. Previously, this happened unnoticed. Now, if the truncated value deviates from the initial input value, a message is printed to console, e.g.: "MinGray parameter outside of numerical precision. Input value 1e-50 truncated to 0 with difference 1e-50"
- abs_diff_image with image type 'byte' returned wrong results if the multiplication parameter was larger than 127 and at least one of the available SIMD optimizations (SSE41 or AVX2) were enabled. This problem has been fixed.
- In rare cases, abs_diff_image returned wrong results for image type 'byte' and 'int1' on all supported platforms. The maximum difference was 1 gray value. This problem has been fixed.
- edges_image, edges_color, and nonmax_suppression_dir sometimes caused the program to crash for input images with a width or a height of 1 if the non-maximum suppression mode was set to 'nms' or 'inms'. The same applied for nonmax_suppression_amp with the non-maximum suppression mode set to 'loc_max'. These problems have been fixed.
- scale_image in rare cases handled overflows incorrectly for 'int4' and 'int8' images. This problem has been fixed.
- Creating a drawing object without a previously opened window triggered an unnecessary HALCON error 5286 ("Missing call to XInitThreads: multithreading support for X11 required") under Linux. This problem has been fixed.
- get_drawing_object_iconic and get_drawing_object_params were not synchronized with window events. In rare cases, get_drawing_object_iconic thus returned the error 3513 ("Internal error: number of chords too big for num_max"). This problem has been fixed.
- Complemented regions were displayed incorrectly if the system variable 'clip_region' was set to 'false'. This problem has been fixed.
- threshold in rare cases did not clip 'MinGray' and 'MaxGray' to the correct bounds for 'int4' images. set_grayval in rare cases did not clip 'Grayval' to the correct bounds for 'int8' images. gen_image_proto, paint_region, and overpaint_region in some cases for large values did not paint the correct 'Grayval' for 'int8' images. These problems have been fixed.
- In rare cases, fuzzy_measure_pairs crashed with cyclic measure objects (i.e., spanning 360 degrees) if no edges were found. This problem has been fixed.
- The version of OpenSSL has been updated to 1.1.1k.
- gray_range_rect crashed in rare cases if operator parallelization was disabled. This problem has been fixed.
- In multi-threading applications, HALCON could crash during the execution of do_ocr_word_cnn, do_ocr_word_mlp, do_ocr_word_svm, or do_ocr_word_knn. This problem has been fixed.
- In some cases, text_line_orientation used uninitialized values outside of the input region, which led to inaccurate results. This problem has been fixed. Note that this change affects the compatibility. Read more.
- In some cases, find_text returned overlapping or duplicate regions when using text models created with mode 'auto'. This problem has been fixed.
- rectangularity, as well as region_features and select_shape for the feature 'rectangularity', sometimes unnecessarily ran out of memory for very large regions. This problem has been fixed.
- For sort_region with 'SortMode' set to 'character', the optional parameter for specifying the maximum percentage overlap could be set to a value greater than 100. In rare cases, this could lead to an infinite loop when executing sort_regions. Now, the optional parameter can only be set to a value from 0 to 100.
- watersheds_threshold crashed for very small images. This problem has been fixed.
- In rare cases, watersheds_marker, object_model_3d_to_xyz, and reduce_object_model_3d_by_view could return the error 3513 ("Internal error: number of chords too big for num_max"). This problem has been fixed.
- In rare cases, HALCON could crash when resetting a program in HDevelop with F2 while a mutex or another synchronization object was destructed. This problem has been fixed.
- For certain 'Start'/'End' combinations together with a real-valued 'Step' size, tuple_gen_sequence returned a sequence of unexpected length. For example, [0:0.1:0.3] resulted in [0, 0.1, 0.2] instead of [0, 0.1, 0.2, 0.3]. This problem has been fixed. Now, the length of the sequence as well as the last sequence value are computed more robustly, thus giving the expected result within a wider range of input values.
- When calling the operators get_handle_tuple, get_handle_object, or get_handle_param simultaneously from two different threads for the first time, HALCON could return an incorrect error code or in crash in rare cases. This problem has been fixed.
- Serializing the same dictionary or message either through write_dict, write_message, or serialize_handle from multiple threads at the same time could lead to incorrect serializations, error messages or, in rare cases, crashes. This problem has been fixed. The serialization of dictionaries and handles is now fully reentrant.
- When calling integer_to_handle with multiple input integers and if some of those integers did not represent a handle or represented a cleared handle, the operator could leave the other handles in a defective state. This problem has been fixed.
- If the handle legacy mode was enabled and either clear_handle was called twice on the same handle, or handle_to_integer was called on an already cleared handle, HALCON could show undefined behavior and crash in rare cases. These problems have been fixed. handle_to_integer now raises an exception when called on an already cleared handle.
- When connecting both ends of two contours to each other, union_cotangential_contours_xld sometimes connected the wrong endpoints. This problem has been fixed.
- gen_cube_map_mosaic and gen_spherical_mosaic may have crashed in rare cases. This problem has been fixed.
- Certain excessively large values of 'Lookaround' for get_contour_angle_xld were not detected as invalid, resulting in a crash. This problem has been fixed.
- gen_contour_nurbs_xld crashed if an empty tuple was passed to the parameter 'Weights'. This problem has been fixed. Now, if an empty tuple is passed, the default value 'auto' is used.
- The C language interface ignored the error checking setting and always acted as if ~give_error had been set. This problem has been fixed.
- In HALCON/.NET, only the lower 32 bits were considered when casting a HTuple containing a long value to bool. For example, (bool) new HTuple(0x100000000L) would return false. This problem has been fixed. Note that this change affects the compatibility. Read more.
- When querying ParamNames or ParamDimensions in HDevEngine/.NET, it could happen that further queries were altered accidentally. This problem has been fixed. Now, a deep copy is returned as query result.
- The Python examples for HALCON Steady incorrectly required the Python language interface for HALCON Progress. This problem has been fixed.
- Attempting to use remote debugging via HDevEngine/Python caused a crash. This problem has been fixed.
Language Interface Example Programs
- The example ia_callback.cpp hung upon closing. 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.
- The MVTec GigE Vision Streaming Filter version 22.214.171.124, which is part of the Windows installer, fixes two problems:
- With the streaming filter, the EventTransferEnd was only fired for successfully received blocks but not for undeliverable ones.
- In rare cases, if an application did not shutdown gracefully while streaming was underway, automatic unloading of the streaming filter could lead to a crash of the operating system.
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.