Compartir tecnología

Imagen de cámara de luz estructurada MechMind que captura la llamada SDK de Python

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Efecto de prueba

Cámara de luz estructurada Mech-Mind

Las cámaras de luz estructurada de Mech Mind, especialmente la serie Mech-Eye, son cámaras 3D de alta precisión de grado industrial que se utilizan ampliamente en automatización industrial, navegación de robots, inspección de calidad y otros campos. El siguiente es un análisis detallado de la cámara de luz estructurada Mech Mind:

1. Descripción general del producto

Las cámaras de luz estructurada de Mech Mind, como Mech-Eye PRO, utilizan tecnología de luz estructurada de alta velocidad para proporcionar una excelente resistencia a la luz ambiental manteniendo una alta precisión y velocidad. Estas cámaras generalmente contienen módulos de algoritmos de visión enriquecidos y se pueden aplicar a muchos escenarios prácticos típicos, como carga y descarga de piezas de fabricación, posicionamiento de alta precisión, ensamblaje, apriete de tornillos e investigación académica.

2. Principio de funcionamiento

La cámara de luz estructurada de Mech Mind utiliza principalmente el principio de proyección de luz estructurada. Proyectan patrones específicos (como luz estructurada generada por láseres) sobre el objeto que se está fotografiando, y la cámara captura el contorno y la forma del objeto. Esta tecnología puede calcular con precisión la posición y la forma de un objeto analizando el reflejo y la refracción de la luz sobre el objeto.

3. Características del producto

  1. Alta precisión : La cámara de luz estructurada de Mech Mind puede obtener modelos tridimensionales de alta precisión en poco tiempo para diferentes objetos, y se puede obtener información precisa sobre la forma en una sola toma. Por ejemplo, la repetibilidad de un solo punto en la dirección Z de Mech-Eye PRO puede alcanzar 0,05 mm (a 1,0 m).
  2. alta velocidad: La cámara tiene capacidades rápidas de adquisición y procesamiento de datos. Por ejemplo, el tiempo de adquisición típico de Mech-Eye PRO es de 0,3 a 0,6 segundos.
  3. Amplio campo de visión y gran profundidad de campo.: Algunos modelos, como la cámara Mech-Eye Deep 3D, tienen las características de un gran campo de visión y una gran profundidad de campo, y se pueden aplicar a una variedad de tipos de apilamiento comunes.
  4. Fuerte resistencia a la luz ambiental.: La cámara de luz estructurada de Mech Mind aún puede mantener excelentes efectos de imagen bajo fuertes interferencias de luz ambiental (como >20000lx).
  5. Implementación flexible: La cámara está adaptada a la mayoría de las principales marcas de robots nacionales y extranjeros y puede lograr un control completo del movimiento de los robots adaptados.
  6. Abierto y fácil de usar: La cámara proporciona una interfaz de usuario amigable y una API abierta para facilitar el desarrollo secundario y la integración de los usuarios.
  7. Estable y confiable: Las cámaras de luz estructurada de Mech Mind tienen alta estabilidad y confiabilidad, como el tiempo medio entre fallas (MTBF) de Mech-Eye PRO ≥ 40,000 horas.

4. Áreas de aplicación

Las cámaras de luz estructurada de Mech Mind se utilizan ampliamente en automóviles, aviación, fabricación de moldes, automatización industrial y otros campos. En el campo de la automoción, pueden obtener de forma rápida y precisa la información de la forma de la superficie de la carrocería del automóvil; en el campo de la aviación, pueden obtener la información de la forma tridimensional de la aeronave, proporcionando datos precisos para el diseño y la fabricación de la aeronave. .

5. Resumen

Las cámaras de luz estructurada de Mech Mind desempeñan un papel importante en campos como la automatización industrial y la navegación robótica debido a su alta precisión, alta velocidad, gran campo de visión, gran profundidad de campo, fuerte resistencia a la luz ambiental y estabilidad y confiabilidad. Con el avance continuo de la tecnología y la expansión continua de los escenarios de aplicación, se espera que las cámaras de luz estructurada de Mech Mind demuestren su valor único en más campos.

Configurar un entorno de desarrollo Python

Crear un entorno virtual

Descargue el paquete opencv-python

Descargue el paquete de captura de cámara Mecamander

  1. pip install MechEyeAPI
  2. pip install python-opencv

Análisis de pasos

conectar cámara

  1. def ConnectCamera(self):
  2. camera_infos = Camera.discover_cameras()
  3. if len(camera_infos) != 1:
  4. print("相机连接出现异常,检查网线")
  5. return
  6. error_status = self.camera.connect(camera_infos[0])
  7. if not error_status.is_ok():
  8. show_error(error_status)
  9. return

Desconectar la cámara

  1. def DisConnectCamera(self):
  2. self.camera.disconnect()
  3. print("Disconnected from the camera successfully.")

Recoge imágenes 2D e imágenes 3D.

  1. def connect_and_capture(self):
  2. # Obtain the 2D image resolution and the depth map resolution of the camera.
  3. resolution = CameraResolutions()
  4. show_error(self.camera.get_camera_resolutions(resolution))
  5. print_camera_resolution(resolution)
  6. time1 = time.time()
  7. # Obtain the 2D image.
  8. frame2d = Frame2D()
  9. show_error(self.camera.capture_2d(frame2d))
  10. row, col = 222, 222
  11. color_map = frame2d.get_color_image()
  12. print("The size of the 2D image is {} (width) * {} (height).".format(
  13. color_map.width(), color_map.height()))
  14. rgb = color_map[row * color_map.width() + col]
  15. print("The RGB values of the pixel at ({},{}) is R:{},G:{},B{}n".
  16. format(row, col, rgb.b, rgb.g, rgb.r))
  17. Image2d = color_map.data()
  18. time2 = time.time()
  19. print('grab 2d image : '+str((time2-time1)*1000)+'ms')
  20. # if not confirm_capture_3d():
  21. # return
  22. # Obtain the depth map.
  23. frame3d = Frame3D()
  24. show_error(self.camera.capture_3d(frame3d))
  25. depth_map = frame3d.get_depth_map()
  26. print("The size of the depth map is {} (width) * {} (height).".format(
  27. depth_map.width(), depth_map.height()))
  28. depth = depth_map[row * depth_map.width() + col]
  29. print("The depth value of the pixel at ({},{}) is depth :{}mmn".
  30. format(row, col, depth.z))
  31. Image3d = depth_map.data()
  32. time3 = time.time()
  33. print('grab depth image : '+str((time3-time2)*1000)+'ms')
  34. return Image2d,Image3d
  35. # Obtain the point cloud.
  36. # point_cloud = frame3d.get_untextured_point_cloud()
  37. # print("The size of the point cloud is {} (width) * {} (height).".format(
  38. # point_cloud.width(), point_cloud.height()))
  39. # point_xyz = point_cloud[row * depth_map.width() + col]
  40. # print("The coordinates of the point corresponding to the pixel at ({},{}) is X: {}mm , Y: {}mm, Z: {}mmn".
  41. # format(row, col, point_xyz.x, point_xyz.y, point_xyz.z))

código de prueba completo

  1. # With this sample, you can connect to a camera and obtain the 2D image, depth map, and point cloud data.
  2. import time
  3. from mecheye.shared import *
  4. from mecheye.area_scan_3d_camera import *
  5. from mecheye.area_scan_3d_camera_utils import *
  6. import cv2
  7. class ConnectAndCaptureImages(object):
  8. def __init__(self):
  9. self.camera = Camera()
  10. def connect_and_capture(self):
  11. # Obtain the 2D image resolution and the depth map resolution of the camera.
  12. resolution = CameraResolutions()
  13. show_error(self.camera.get_camera_resolutions(resolution))
  14. print_camera_resolution(resolution)
  15. time1 = time.time()
  16. # Obtain the 2D image.
  17. frame2d = Frame2D()
  18. show_error(self.camera.capture_2d(frame2d))
  19. row, col = 222, 222
  20. color_map = frame2d.get_color_image()
  21. print("The size of the 2D image is {} (width) * {} (height).".format(
  22. color_map.width(), color_map.height()))
  23. rgb = color_map[row * color_map.width() + col]
  24. print("The RGB values of the pixel at ({},{}) is R:{},G:{},B{}n".
  25. format(row, col, rgb.b, rgb.g, rgb.r))
  26. Image2d = color_map.data()
  27. time2 = time.time()
  28. print('grab 2d image : '+str((time2-time1)*1000)+'ms')
  29. # if not confirm_capture_3d():
  30. # return
  31. # Obtain the depth map.
  32. frame3d = Frame3D()
  33. show_error(self.camera.capture_3d(frame3d))
  34. depth_map = frame3d.get_depth_map()
  35. print("The size of the depth map is {} (width) * {} (height).".format(
  36. depth_map.width(), depth_map.height()))
  37. depth = depth_map[row * depth_map.width() + col]
  38. print("The depth value of the pixel at ({},{}) is depth :{}mmn".
  39. format(row, col, depth.z))
  40. Image3d = depth_map.data()
  41. time3 = time.time()
  42. print('grab depth image : '+str((time3-time2)*1000)+'ms')
  43. return Image2d,Image3d
  44. # Obtain the point cloud.
  45. # point_cloud = frame3d.get_untextured_point_cloud()
  46. # print("The size of the point cloud is {} (width) * {} (height).".format(
  47. # point_cloud.width(), point_cloud.height()))
  48. # point_xyz = point_cloud[row * depth_map.width() + col]
  49. # print("The coordinates of the point corresponding to the pixel at ({},{}) is X: {}mm , Y: {}mm, Z: {}mmn".
  50. # format(row, col, point_xyz.x, point_xyz.y, point_xyz.z))
  51. def main(self):
  52. # List all available cameras and connect to a camera by the displayed index.
  53. if find_and_connect(self.camera):
  54. d2,d3 = self.connect_and_capture()
  55. self.camera.disconnect()
  56. print("Disconnected from the camera successfully.")
  57. return d2,d3
  58. def GrabImages(self):
  59. d2, d3 = self.connect_and_capture()
  60. return d2, d3
  61. def ConnectCamera(self):
  62. camera_infos = Camera.discover_cameras()
  63. if len(camera_infos) != 1:
  64. print("相机连接出现异常,检查网线")
  65. return
  66. error_status = self.camera.connect(camera_infos[0])
  67. if not error_status.is_ok():
  68. show_error(error_status)
  69. return
  70. def DisConnectCamera(self):
  71. self.camera.disconnect()
  72. print("Disconnected from the camera successfully.")
  73. if __name__ == '__main__':
  74. #pip install MechEyeAPI
  75. print('初始化相机对象')
  76. MechMindGraber = ConnectAndCaptureImages()
  77. # d2,d3 = a.main()
  78. print('连接相机')
  79. MechMindGraber.ConnectCamera()
  80. for i in range(60):
  81. print(str(i)+'rn')
  82. print('采集亮度图和深度图')
  83. d2,d3 = MechMindGraber.GrabImages()
  84. cv2.imshow('1',d2)
  85. cv2.waitKey()
  86. cv2.imshow('1', d3)
  87. cv2.waitKey()
  88. print('断开连接')
  89. MechMindGraber.DisConnectCamera()