Guide de migration de la version 2.1.0 vers la version 2.2.0
Mech-Eye API 2.2.0 a été restructuré afin d’offrir une structure plus claire tout en conservant toutes les fonctions auparavant disponibles. De nouvelles fonctions ont également été ajoutées.
Ce sujet répertorie les principaux changements de Mech-Eye API 2.2.0 par rapport à Mech-Eye API 2.1.0. Si vous souhaitez utiliser la version 2.2.0 de Mech-Eye API dans votre programme client existant, vous pouvez vous référer à ce sujet et modifier votre programme client.
|
Importer des modules
Dans Mech-Eye API 2.2.0, les modifications suivantes ont été apportées à l’instruction d’importation des modules :
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Créer un objet caméra
Dans Mech-Eye API 2.2.0, les modifications suivantes ont été apportées à l’instruction de création d’un objet représentant les caméras :
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Découvrir et se connecter à la caméra
Dans Mech-Eye API 2.2.0, les modifications suivantes ont été apportées aux instructions de découverte et de connexion à une caméra :
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Gérer les groupes de paramètres
Mech-Eye API 2.2.0 utilise des classes pour organiser les fonctions liées aux groupes de paramètres et aux paramètres. Pour plus de détails, veuillez vous référer à Hiérarchie fonctionnelle des classes. Les changements des fonctions fréquemment utilisées sont listés ici.
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Définir et obtenir les valeurs des paramètres
Mech-Eye API 2.2.0 utilise des classes pour organiser les fonctions liées aux groupes de paramètres et aux paramètres. Pour plus de détails, veuillez vous référer à Hiérarchie fonctionnelle des classes.
Par ailleurs, Mech-Eye API 2.2.0 fournit des méthodes pour définir et obtenir des paramètres en fonction des types de données des paramètres.
Les types de données de paramètres suivants sont distingués dans Mech-Eye API 2.2.0 :
-
_Int
-
_Float
-
_Bool
-
_Enum
-
_Roi
-
_Range
-
_FloatArray
The following sections provide examples of each data type.
_Int Type
Le paramètre Seuil de contraste des franges dans la catégorie Traitement du nuage de points est utilisé comme exemple.
| 2.1.0 | 2.2.0 |
|---|---|
|
|
_Float Type
Le paramètre Temps d’exposition dans la catégorie Paramètres 2D est utilisé comme exemple.
| 2.1.0 | 2.2.0 |
|---|---|
|
|
_Bool Type
Le paramètre Mappage de tonalité dans la catégorie Paramètres 2D est utilisé comme exemple.
| 2.1.0 | 2.2.0 |
|---|---|
|
|
_Enum Type
Le paramètre Lissage de la surface dans la catégorie Traitement du nuage de points est utilisé comme exemple.
| 2.1.0 | 2.2.0 |
|---|---|
|
|
_Roi Type
Le paramètre ROI est utilisé comme exemple.
| 2.1.0 | 2.2.0 |
|---|---|
|
|
_Range Type
Le paramètre Plage de profondeur est utilisé comme exemple.
| 2.1.0 | 2.2.0 |
|---|---|
|
|
_FloatArray Type
Les paramètres Temps d’exposition dans la catégorie Paramètres 3D sont utilisés comme exemple.
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Acquérir des données
Dans Mech-Eye API 2.2.0, les modifications suivantes ont été apportées aux instructions d’acquisition de données :
Acquérir une image 2D
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Acquérir une carte de profondeur
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Acquérir un nuage de points non texturé
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Acquérir un nuage de points texturé
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Obtenir les informations et les propriétés de la caméra
Mech-Eye API 2.2.0 utilise des classes pour organiser les informations et les propriétés de la caméra. Pour plus de détails, veuillez vous référer à Hiérarchie fonctionnelle des classes.
Obtenir les informations de la caméra
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Obtenir les températures de la caméra
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Obtenir les résolutions d’image
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Obtenir les paramètres intrinsèques de la caméra
| 2.1.0 | 2.2.0 |
|---|---|
|
|
Nouvelles fonctions
Plusieurs nouvelles fonctions pratiques ont été ajoutées à Mech-Eye API 2.2.0.
| Si vous souhaitez utiliser les nouvelles fonctions suivantes, veuillez modifier votre programme client conformément à ce sujet pour utiliser la version 2.2.0 de Mech-Eye API. |
Calculer les normales du nuage de points
En appelant les méthodes suivantes, vous pouvez désormais obtenir directement des données 3D contenant des normales, ce qui réduit la charge de travail du traitement de données ultérieur.
Obtenir un nuage de points non texturé avec normales
-
C++
-
C#
-
Python
mmind::eye::Frame3D frame3D;
camera.capture3DWithNormal(frame3D);
PointCloudWithNormals pointCloud = frame3D.getUntexturedPointCloudWithNormals();
var frame3D = new Frame3D();
camera.Capture3DWithNormal(ref frame3D);
var pointCloud = frame3D.GetUntexturedPointCloudWithNormals();
frame_3d = Frame3D()
camera.capture_3d_with_normal(frame_3d)
point_cloud = frame_3d.get_untextured_point_cloud_with_normals()
Obtenir un nuage de points texturé avec normales
-
C++
-
C#
-
Python
mmind::eye::Frame2DAnd3D frame2DAnd3D;
camera.capture2DAnd3DWithNormal(frame2DAnd3D);
TexturedPointCloudWithNormals pointCloud = frame2DAnd3D.getTexturedPointCloudWithNormals();
var frame2DAnd3D = new Frame2DAnd3D();
camera.Capture2DAnd3DWithNormal(ref frame2DAnd3D);
var pointCloud = frame2DAnd3D.GetTexturedPointCloudWithNormals();
frame_2d_and_3d = Frame2DAnd3D()
camera.capture_2d_and_3d_with_normal(frame_2d_and_3d)
point_cloud = frame_2d_and_3d.get_textured_point_cloud_with_normals()
Enregistrer le nuage de points
En appelant les méthodes suivantes, vous pouvez désormais enregistrer le nuage de points directement aux formats PLY, PCD ou CSV, sans dépendre de bibliothèques logicielles tierces.
Enregistrer un nuage de points non texturé
-
C++
-
C#
-
Python
mmind::eye::Frame3D frame3D;
camera.capture3D(frame3D);
frame3D.saveUntexturedPointCloud(mmind::eye::FileFormat::PLY, "PointCloud.ply");
var frame3D = new frame3D();
camera.Capture3D(ref frame3D);
frame3D.SaveUntexturedPointCloud(FileFormat.PLY, "PointCloud.ply");
frame_3d = Frame3D()
camera.capture_3d(frame_3d)
frame_3d.save_untextured_point_cloud(FileFormat_PLY, "PointCloud.ply")
Enregistrer un nuage de points texturé
-
C++
-
C#
-
Python
mmind::eye::Frame2DAnd3D frame2DAnd3D;
camera.capture2DAnd3D(frame2DAnd3D);
frame2DAnd3D.saveTexturedPointCloud(mmind::eye::FileFormat::PLY, "TexturedPointCloud.ply");
var frame2DAnd3D = new Frame2DAnd3D();
camera.Capture2DAnd3D(ref frame2DAnd3D);
frame2DAnd3D.SaveTexturedPointCloud(FileFormat.PLY, "TexturedPointCloud.ply");
frame_2d_and_3d = Frame2DAnd3D()
camera.capture_2d_and_3d(frame_2d_and_3d)
frame_2d_and_3d.save_textured_point_cloud(FileFormat_PLY, "TexturedPointCloud.ply")
Importer et exporter des groupes de paramètres
En appelant les méthodes suivantes, vous pouvez désormais importer et remplacer tous les groupes de paramètres à partir d’un fichier JSON, ou enregistrer tous les groupes de paramètres dans un fichier JSON.
Importer des groupes de paramètres
-
C++
-
C#
-
Python
camera.userSetManager().loadFromFile("camera_config.json");
camera.UserSetManager().LoadFromFile("camera_config.json");
camera.user_set_manager().load_from_file("camera_config.json")
-
C++
-
C#
-
Python
camera.userSetManager().saveToFile("camera_config.json");
camera.UserSetManager().SaveToFile("camera_config.json");
camera.user_set_manager().save_to_file("camera_config.json")
Vérifier l’état de connexion de la caméra
Le nouveau mécanisme de heartbeat peut être utilisé pour détecter les déconnexions de l’appareil.
Définir l’intervalle du heartbeat
Utilisez la méthode suivante pour définir l’intervalle des signaux de heartbeat :
-
C++
-
C#
-
Python
camera.setHeartbeatInterval(1000);
camera.SetHeartbeatInterval(1000);
camera.set_heartbeat_interval(1000)
Enregistrer la fonction de rappel
Utilisez la méthode suivante pour enregistrer la fonction de rappel qui détecte automatiquement une déconnexion de la caméra et signale une erreur :
-
C++
-
C#
-
Python
mmind::eye::CameraEvent::EventCallback callback = [](mmind::eye::CameraEvent::Event event, void* pUser) {
std::cout << "A camera event has occurred. The event ID is " << event << "." << std::endl;
};
mmind::eye::CameraEvent::registerCameraEventCallback(camera, callback, nullptr, mmind::eye::CameraEvent::CAMERA_EVENT_DISCONNECTED);
private static void CallbackFunc(CameraEvent.Event cameraEvent, IntPtr pUser)
{
Console.WriteLine("A camera event has occurred. The event ID is {0}.", cameraEvent);
}
Utils.ShowError(CameraEvent.RegisterCameraEventCallback(ref camera, CallbackFunc, IntPtr.Zero, (uint)CameraEvent.Event.CAMERA_EVENT_DISCONNECTED));
class CustomCallback(EventCallbackBase):
def __init__(self):
super().__init__()
def run(self, event):
print("A camera event has occurred. The event ID is {0}.".format(event))
camera_event = CameraEvent()
callback = CustomCallback()
show_error(camera_event.register_camera_event_callback(camera, callback, CameraEvent.CAMERA_EVENT_ALL))