Operation Workflow
This topic introduces the basic workflow of using Mech-Eye API to control a camera. The figure and descriptions in this topic use the class and method names of C++ Mech-Eye API. For the corresponding names of different languages, please refer to the example codes.
Discover
Call the discoverCameras()
method in the Camera
class to enumerate all currently connectable cameras and obtain the information of each camera.
-
C++
-
C#
-
Python
std::vector<mmind::eye::CameraInfo> cameraInfoList = mmind::eye::Camera::discoverCameras();
var cameraInfoList = Camera.DiscoverCameras();
camera_info_list = Camera.discover_cameras()
Connect
After instantiating the Camera
class, call the connect()
method in this class to connect to the corresponding camera using the IP address or the device information obtained by the discoverCameras()
method.
-
C++
-
C#
-
Python
mmind::eye::Camera camera;
mmind::eye::ErrorStatus status = camera.connect(cameraInfoList[inputIndex]);
mmind::eye::Camera cameras;
mmind::eye::ErrorStatus status = camera.connect("192.168.0.10");
var camera = new Camera();
var status = camera.Connect(cameraInfoList[inputIndex]);
var camera = new Camera();
var status = camera.Connect("192.168.0.10");
camera = Camera()
camera.connect("192.168.0.10")
Configure
Call the methods in the UserSetManager
and UserSet
classes to select the parameter group on the camera and adjust the parameters.
-
Call the
selectUserSet
method in theUserSetManager
class to select the parameter group to be used.You can obtain all the available parameter groups on the camera through the getAllUserSetNames()
method in this class.-
C++
-
C#
-
Python
mmind::eye::UserSetManager userSetManager = camera.userSetManager(); std::vector<std::string> userSets; auto status = userSetManager.getAllUserSetNames(userSets); status = userSetManager.selectUserSet(userSets.front());
var userSetManager = camera.UserSetManager(); List<string> userSets = new List<string>(); var status = userSetManager.GetAllUserSetNames(ref userSets); status = userSetManager.SelectUserSet(userSets[0]);
user_set_manager = camera.userSetManager() error, user_sets = user_set_manager.get_all_user_set_names() user_set_manager.select_user_set(user_sets[0])
-
-
Call the
getAvailableParameters()
method in theUserSet
class to obtain the information of all the parameters in the current parameter group and check the data type of each parameter.-
C++
-
C#
-
Python
mmind::eye::UserSet currentUserSet = camera.currentUserSet(); std::vector<Parameter*> parameters = currentUserSet.getAvailableParameters();
var currentUserSet = camera.CurrentUserSet(); var parameters = currentUserSet.GetAvailableParameters();
current_user_set = camera.current_user_set() arameters = current_user_set.get_available_parameters()
-
-
Call the
getIntValue()
and other similar methods in theUserSet
class to obtain the current value of a parameter.-
C++
-
C#
-
Python
int fringeContrastThreshold = 0; currentUserSet.getIntValue(mmind::eye::pointcloud_processing_setting::FringeContrastThreshold::name, fringeContrastThreshold);
var fringeContrastThreshold = new int(); camera.CurrentUserSet().GetIntValue(MMind.Eye.PointCloudProcessingSetting.FringeContrastThreshold.Name, ref fringeContrastThreshold);
error, fringe_contrast_threshold = current_user_set.get_int_value(PointCloudFringeContrastThreshold.name)
-
-
Call the
setIntValue()
and other similar methods in theUserSet
class to set the value of a parameter.-
C++
-
C#
-
Python
auto status = currentUserSet.setIntValue(mmind::eye::pointcloud_processing_setting::FringeContrastThreshold::name, 15);
var status = currentUserSet.SetIntValue(MMind.Eye.PointCloudProcessingSetting.FringeContrastThreshold.Name, 15);
status = current_user_set.set_int_value(PointCloudFringeContrastThreshold.name, 15)
-
-
Call the
saveAllParametersToDevice()
method in theUserSet
class to save the set parameter values to the camera.-
C++
-
C#
-
Python
auto status = currentUserSet.SaveAllParametersToDevice();
var status = currentUserSet.SaveAllParametersToDevice();
status = current_user_set.save_all_parameters_to_device()
-
Acquire and Retrieve Data
Mech-Eye API provides various methods for acquiring and retrieving different types of data. Using these methods, you can obtain the 2D and 3D data separately or together.
-
Acquire and retrieve the data for generating the 2D image:
-
C++
-
C#
-
Python
mmind::eye::Frame2D frame2D; camera.capture2D(frame2D); mmind::eye::Color2DImage color = frame2D.getColorImage(); mmind::eye::GrayScale2DImage gray= frame2D.getGrayScaleImage();
var frame = new Frame2D(); camera.Capture2D(ref frame); var color = frame.GetColorImage(); var gray = frame.GetGrayScaleImage();
frame_2d = Frame2D() camera.capture_2d(frame_2d) color = frame.get_color_image() gray = frame.get_gray_scale_image()
-
-
Acquire and retrieve the data for generating the depth map and untextured point cloud:
-
C++
-
C#
-
Python
mmind::eye::Frame3D frame3D; camera.capture3D(frame3D); mmind::eye::DepthMap depth = frame3D.getDepthMap(); mmind::eye::PointCloud cloud= frame3D.getUntexturedPointCloud();
var frame = new Frame3D(); camera.Capture3D(ref frame); var depth = frame.GetDepthMap(); var cloud = frame.GetUntexturedPointCloud();
frame_3d = Frame3D() camera.capture_3d(frame_3d) depth = frame.get_depth_map() cloud = frame_3d.get_untextured_point_cloud()
-
-
Acquire and retrieve the data for generating the 2D image, depth map, and textured point cloud:
-
C++
-
C#
-
Python
mmind::eye::Frame2DAnd3D frame2DAnd3D; camera.capture2DAnd3D(frame2DAnd3D); mmind::eye::Color2DImage color = frame2DAnd3D.frame2D().getColorImage(); mmind::eye::DepthMap depth = frame2DAnd3D.frame3D().getDepthMap(); mmind::eye::TexturedPointCloud cloud = frame2DAnd3D.getTexturedPointCloud();
var frame = new Frame2DAnd3D(); camera.Capture2DAnd3D(ref frame); var color = frame2DAnd3D.Frame2D().GetColorImage(); var depth = frame2DAnd3D.Frame3D().GetDepthMap(); var cloud = frame2DAnd3D.GetTexturedPointCloud();
frame = Frame2DAnd3D() camera.capture_2d_and_3d(frame) color = frame.frame_2d().get_color_image() depth = frame.frame_3d().get_depth_image() cloud = frame.get_textured_point_cloud()
-
-
Acquire and retrieve the data for generating the depth map and untextured point cloud with normals:
-
C++
-
C#
-
Python
mmind::eye::Frame3D frame3D; camera.capture3DWithNormal(frame3D); mmind::eye::DepthMap depth = frame3D.getDepthMap(); PointCloudWithNormals pointCloud = frame3D.getUntexturedPointCloudWithNormals();
var frame3D = new Frame3D(); camera.Capture3DWithNormal(ref frame3D); var depth = frame3D.GetDepthMap(); var pointCloud = frame3D.GetUntexturedPointCloudWithNormals();
frame_3d = Frame3D() camera.capture_3d_with_normal(frame_3d) depth = frame_3d.get_depth_map() point_cloud = frame_3d.get_untextured_point_cloud_with_normals()
-
-
Acquire and retrieve the data for generating the 2D image, depth map, and textured point cloud with normals:
-
C++
-
C#
-
Python
mmind::eye::Frame2DAnd3D frame2DAnd3D; camera.capture2DAnd3DWithNormal(frame2DAnd3D); mmind::eye::Color2DImage color = frame2DAnd3D.frame2D().getColorImage(); mmind::eye::DepthMap depth = frame2DAnd3D.frame3D().getDepthMap(); TexturedPointCloudWithNormals pointCloud = frame2DAnd3D.getTexturedPointCloudWithNormals();
var frame2DAnd3D = new Frame2DAnd3D(); camera.Capture2DAnd3DWithNormal(ref frame2DAnd3D); var color = frame2DAnd3D.Frame2D().GetColorImage(); var depth = frame2DAnd3D.Frame3D().GetDepthMap(); var pointCloud = frame2DAnd3D.GetTexturedPointCloudWithNormals();
frame_2d_and_3d = Frame2DAnd3D() camera.capture_2d_and_3d_with_normal(frame_2d_and_3d) color = frame_2d_and_3d.frame_2d().get_color_image() depth = frame_2d_and_3d.frame_3d().get_depth_map() point_cloud = frame_2d_and_3d.get_textured_point_cloud_with_normals()
-
Disconnect
Call the disconnect()
method in the Camera
class to disconnect from the current camera.
-
C++
-
C#
-
Python
camera.disconnect();
camera.Disconnect();
camera.disconnect()
This topic introduced the basic workflow of using Mech-Eye API to control a camera. The next topic provides the reference manual for Mech-Eye API.