Évaluer les résultats via HDev Engine
Fonction
Cette étape exécute un programme de vision Halcon prédéfini via HDevEngine et envoie le résultat du calcul à Mech-Vision.
Entrée et sortie
-
Entrées: Déterminées par le type de données saisi dans le paramètre Input Port Name.
-
Sorties: Déterminées par le type de données saisi dans le paramètre Output Port Name.
Description des paramètres
Paramètres du programme
Les paramètres dans “Program Settings” sont illustrés dans la figure ci-dessous.
- Chemin du programme HDev
-
Description: Ce paramètre sert à spécifier le chemin du programme HDev, c’est-à-dire le chemin du programme principal dans Halcon HDevelop.
- Dossier des procédures externes
-
Description: Ce paramètre sert à spécifier le chemin où sont stockées les procédures externes Halcon (plusieurs chemins peuvent être ajoutés en les séparant par des points-virgules, “;”).
- Nom de la procédure
-
Description: Ce paramètre sert à définir le nom de la procédure externe. Vous pouvez sélectionner le nom dans la liste déroulante.
Paramètres de débogage
Les paramètres dans “Debugging Settings” sont illustrés dans la figure ci-dessous.
- Débogage en ligne
-
Description: Sélectionnez pour activer le serveur de débogage. Vous pourrez alors vérifier en temps réel dans Halcon HDevelop les données entrées par Mech-Vision et déboguer le programme.
Réglage par défaut: Non sélectionné.
Instruction de réglage: Une fois Online Debugging sélectionné, allez dans la barre de menus de HALCON HDevelop et cliquez sur , puis cliquez sur OK dans la fenêtre contextuelle pour activer le serveur de débogage. Si le serveur de débogage n’est pas activé dans Halcon, Mech-Vision peut présenter des lenteurs pendant l’exécution.
Recommandation de réglage: Veuillez sélectionner l’option selon vos besoins réels.
Paramètres d’entrée
Les paramètres dans “Input Settings” sont illustrés dans la figure ci-dessous.
|
Les Input Settings ne peuvent être configurés qu’après avoir saisi le Procedure Name, sinon les paramètres correspondants n’apparaîtront pas. |
- Nom du port d’entrée
-
Description: Ce paramètre sert à spécifier le(s) type(s) de données du(des) port(s) d’entrée.
- Noms des variables de contrôle en entrée
-
Description: Ce paramètre sert à définir la liste des noms des données de contrôle en entrée.
- Noms des variables iconiques en entrée
-
Description: Ce paramètre sert à définir la liste des noms des données iconiques en entrée.
Paramètres de sortie
Les paramètres dans “Output Settings” sont illustrés dans la figure ci-dessous.
- Nom du port de sortie
-
Description: Ce paramètre sert à spécifier le(s) type(s) de données du(des) port(s) de sortie.
- Données de contrôle en sortie
-
Description: Ce paramètre sert à définir la liste des noms des données de contrôle en sortie.
- Données iconiques en sortie
-
Description: Ce paramètre sert à définir la liste des noms des données iconiques en sortie.
Instructions
Prérequis
Pour utiliser l’étape “Evaluate Results by HDevEngine”, les deux prérequis suivants doivent être remplis, sinon l’étape ne pourra pas être trouvée dans la bibliothèque d’étapes.
-
Le logiciel Halcon HDevelop sous licence a été installé sur votre ordinateur.
-
Copiez les fichiers DLL concernés, comme indiqué dans la figure ci-dessous, depuis le
Installation folder\\bin\\x64-win64de Halcon HDevelop vers le dossier d’installation de Mech-Vision. Ensuite, activez le plugin step_hdev_engine via dans la barre de menus de Mech-Vision, puis redémarrez Mech-Vision pour que les modifications prennent effet.
Méthodes prises en charge pour appeler des programmes Halcon
-
Appeler un programme principal HDev dans Mech-Vision, et il n’y a aucune procédure externe dans le programme principal.
-
Appeler un programme principal HDev dans Mech-Vision, et il y a plusieurs procédures externes dans le programme principal.
-
Appeler une seule procédure externe dans Mech-Vision.
Types de données pris en charge pour la conversion
Dans le projet Mech-Vision, lorsque d’autres étapes envoient des données à cette étape, les types de données pris en charge par Mech-Vision sont convertis en types de données pris en charge par Halcon. Lorsque cette étape envoie des données à d’autres étapes, les types de données pris en charge par Halcon sont convertis en types de données pris en charge par Mech-Vision.
Les informations détaillées sur les types de données pris en charge pour la conversion sont les suivantes.
-
Types de données iconiques
| Halcon data type | Mech-Vision Data type | Remarque |
|---|---|---|
Image |
Image |
Les types de données pris en charge par Mech-Vision et par Halcon peuvent être convertis l’un en l’autre. |
-
Types de données de contrôle
| Halcon data type | Mech-Vision Data type | Remarque |
|---|---|---|
Tuple |
NumberList, String, StringList, Variant, VariantList |
Lorsque d’autres étapes envoient des données à cette étape, le type de données Mech-Vision en entrée peut être converti en tuples, qui peuvent être une collection de données hétérogènes. Lorsque cette étape envoie des données à d’autres étapes, seuls les tuples contenant un type de données unique peuvent être convertis en un type de données pris en charge par Mech-Vision. |
integer |
NumberList |
Ce n’est que lorsque l’étape envoie des données à d’autres étapes que les types de données pris en charge par Halcon peuvent être convertis en types de données pris en charge par Mech-Vision. |
real |
NumberList |
Ce n’est que lorsque l’étape envoie des données à d’autres étapes que les types de données pris en charge par Halcon peuvent être convertis en types de données pris en charge par Mech-Vision. |
string |
String |
Ce n’est que lorsque l’étape envoie des données à d’autres étapes que les types de données pris en charge par Halcon peuvent être convertis en types de données pris en charge par Mech-Vision. |
Remarques
Veuillez prêter attention aux points suivants lorsque vous utilisez l’étape “Evaluate Results by HDevEngine” pour exécuter le programme Halcon.
-
Input Settings n’a pas besoin d’être configuré lorsque seul le programme principal est exécuté.
-
L’exécution simultanée du programme principal et des procédures externes n’est pas prise en charge.
-
Si vous souhaitez déboguer ou modifier le code du programme Halcon, veuillez sélectionner “Reload File” dans Execution Flags, afin que la version la plus récente du programme Halcon soit rechargée à chaque exécution du projet. Si l’option “Reload File” n’est pas sélectionnée, la version non modifiée du programme sera chargée lors de la prochaine exécution du projet.
Exemples d’utilisation
Exemple 1: Appeler un programme principal HDev sans aucune procédure externe
Le programme Halcon utilisé dans cet exemple est présenté ci-dessous.
read_image (Image, 'fabrik')
regiongrowing (Image, Regions, 1, 1, 3, 200)
area_center (Regions, Area, Row, Column)
Après avoir enregistré le programme ci-dessus dans Halcon HDevelop, vous pouvez appeler le programme dans Mech-Vision. Le flux opérationnel comprend les étapes suivantes.
-
Définissez le chemin du programme principal. Définissez hDev Program Path dans les paramètres de l’étape “Evaluate Results by HDevEngine”.
-
Configurez les ports de sortie. Selon les types de données utilisés dans Halcon, définissez le paramètre Output Port Name.
-
Définissez les noms des données de sortie. Selon les noms de données correspondants dans Halcon, définissez Output Ctrl Var Names et Output Iconic Var Names.
Après avoir terminé les opérations ci-dessus, les paramètres de l’étape sont présentés comme suit.
Le projet Mech-Vision correspondant à cet exemple est présenté ci-dessous. Vous pouvez double-cliquer sur le flux de données correspondant aux ports de sortie pour vérifier les résultats.
Exemple 2: Appeler un programme principal HDev avec plusieurs procédures externes
Le programme Halcon utilisé dans cet exemple est présenté ci-dessous.
* atoms.hdev: Locates irregularities in an atomic grid structure
*
dev_close_window ()
dev_update_window ('off')
* ****
* Acquire image
* ****
read_image (Image, 'atoms')
get_image_size (Image, Width, Height)
crop_rectangle1 (Image, Image, Height / 2, 0, Height - 1, Width - 1)
get_image_size (Image, Width, Height)
*dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowID)
*set_display_font (WindowID, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (2)
dev_display (Image)
*disp_message (WindowID, 'Original image', 'window', 12, 12, 'black', 'true')
*disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* Segment image
* ****
* -> Using watershed
gauss_filter (Image, ImageGauss, 5)
watersheds (ImageGauss, Basins, Watersheds)
dev_display (Image)
dev_set_colored (12)
dev_display (Watersheds)
*disp_message (WindowID, 'Watersheds', 'window', 12, 12, 'black', 'true')
*disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* Process regions
* ****
* -> Skip regions at the border of the image
smallest_rectangle1 (Basins, Row1, Column1, Row2, Column2)
select_shape (Basins, SelectedRegions1, 'column1', 'and', 2, Width - 1)
select_shape (SelectedRegions1, SelectedRegions2, 'row1', 'and', 2, Height - 1)
select_shape (SelectedRegions2, SelectedRegions3, 'column2', 'and', 1, Width - 3)
select_shape (SelectedRegions3, Inner, 'row2', 'and', 1, Height - 3)
* -> Select irregularly shaped atoms
select_shape (Inner, Irregular, ['moments_i1','moments_i1'], 'or', [0,9.5e8], [1.5e8,1e10])
dev_display (Image)
dev_set_line_width (1)
dev_set_color ('white')
dev_display (Inner)
dev_set_line_width (3)
dev_set_color ('red')
dev_display (Irregular)
*disp_message (WindowID, 'Defects', 'window', 12, 12, 'black', 'true')
Après avoir enregistré le programme ci-dessus dans Halcon HDevelop, vous pouvez appeler le programme dans Mech-Vision. Le flux opérationnel comprend les étapes suivantes.
-
Définissez le chemin du programme principal. Définissez hDev Program Path dans les paramètres de l’étape “Evaluate Results by HDevEngine”.
-
Définissez le chemin des procédures externes. Définissez le chemin des procédures externes dans External Procedure Folder dans les paramètres de l’étape “Evaluate Results by HDevEngine”.
-
Configurez les ports de sortie. Selon les types de données utilisés dans Halcon, définissez le paramètre Output Port Name.
-
Définissez les noms des données de sortie. Selon les noms de données correspondants dans Halcon, définissez Output Ctrl Var Names et Output Iconic Var Names.
Après avoir terminé les opérations ci-dessus, les paramètres de l’étape sont présentés comme suit.
Le projet Mech-Vision correspondant à cet exemple est présenté ci-dessous. Vous pouvez double-cliquer sur le flux de données correspondant aux ports de sortie pour vérifier les résultats.
Exemple 3: Appeler une seule procédure externe
Le programme Halcon utilisé dans cet exemple est présenté ci-dessous.
gauss_filter(Image, Image_Gauss, Kernel_Size)
regiongrowing (Image_Gauss, Regions, 1, 1, 3, 200)
area_center (Regions, Area, Row, Column)
return ()
Après avoir enregistré le programme ci-dessus dans Halcon HDevelop, vous pouvez appeler le programme dans Mech-Vision. Le flux opérationnel comprend les étapes suivantes.
-
Définissez le chemin des procédures externes. Définissez le chemin des procédures externes dans External Procedure Folder dans les paramètres de l’étape “Evaluate Results by HDevEngine”.
-
Définissez le nom de la procédure externe. Sélectionnez le nom de la procédure externe dans la liste déroulante du paramètre Procedure Name.
-
Configurez les ports d’entrée. Selon la liste des paramètres de la procédure externe, définissez le paramètre Input Port Name.
-
Définissez les noms des données d’entrée. Selon les noms de données correspondants dans Halcon, définissez Input Ctrl Var Names et Input Iconic Var Names.
-
Configurez les ports de sortie. Selon les types de données utilisés dans Halcon, définissez le paramètre Output Port Name.
-
Définissez les noms des données de sortie. Selon les noms de données correspondants dans Halcon, définissez Output Ctrl Var Names et Output Iconic Var Names.
Après avoir terminé les opérations ci-dessus, les paramètres de l’étape sont présentés comme suit.
Le projet Mech-Vision correspondant à cet exemple est présenté ci-dessous. Vous pouvez double-cliquer sur le flux de données correspondant aux ports de sortie pour vérifier les résultats.