Обмен технологиями

MechMind структурированный свет камеры захвата изображения SDK Python вызов

2024-07-12

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

Тестовый эффект

Камера со структурированным светом Mech-Mind

Камеры со структурированным светом Mech Mind, особенно серия Mech-Eye, представляют собой высокоточные 3D-камеры промышленного уровня, которые широко используются в промышленной автоматизации, навигации роботов, контроле качества и других областях. Ниже приводится подробный анализ камеры со структурированным светом Mech Mind:

1. Обзор продукта

Камеры со структурированным светом Mech Mind, такие как Mech-Eye PRO, используют технологию высокоскоростного структурированного света, чтобы обеспечить превосходную устойчивость к окружающему свету, сохраняя при этом высокую точность и скорость. Эти камеры обычно содержат богатые модули алгоритмов машинного зрения и могут применяться во многих типичных практических сценариях, таких как загрузка и выгрузка производственных заготовок, высокоточное позиционирование, сборка, затяжка винтов и академические исследования.

2. Принцип работы

Камера со структурированным светом Mech Mind в основном использует принцип проекции структурированного света. Они проецируют определенные узоры (например, структурированный свет, генерируемый лазерами) на фотографируемый объект, а контур и форма объекта фиксируются камерой. Эта технология позволяет точно рассчитать положение и форму объекта, анализируя отражение и преломление света на объекте.

3. Особенности продукта

  1. Высокая точность : Камера со структурированным светом Mech Mind позволяет за короткое время получить высокоточные трехмерные модели. Для различных объектов точную информацию о форме можно получить всего за один снимок. Например, повторяемость одноточечной точки Mech-Eye PRO в направлении Z может достигать 0,05 мм (на расстоянии 1,0 м).
  2. высокоскоростной: Камера имеет возможность быстрого сбора и обработки данных. Например, типичное время сбора данных Mech-Eye PRO составляет 0,3–0,6 секунды.
  3. Большое поле зрения и большая глубина резкости: некоторые модели, такие как 3D-камера Mech-Eye Deep, обладают большим полем зрения и большой глубиной резкости и могут применяться для различных распространенных типов штабелирования.
  4. Сильная устойчивость к окружающему свету: Камера со структурированным светом Mech Mind по-прежнему может сохранять превосходные эффекты изображения даже при сильных помехах от окружающего света (например, >20 000 люкс).
  5. Гибкое развертывание: камера адаптирована к большинству основных марок роботов в стране и за рубежом и позволяет полностью контролировать движение адаптированных роботов.
  6. Открытый и простой в использовании: камера имеет дружественный пользовательский интерфейс и открытый API для облегчения вторичной разработки и интеграции пользователей.
  7. Стабильный и надежный: Камеры со структурированным светом Mech Mind обладают высокой стабильностью и надежностью, например, среднее время наработки на отказ (MTBF) Mech-Eye PRO ≥ 40 000 часов.

4. Области применения

Камеры со структурированным светом Mech Mind широко используются в автомобилях, авиации, производстве пресс-форм, промышленной автоматизации и других областях. В автомобильной сфере они могут быстро и точно получать информацию о форме поверхности кузова автомобиля; в авиационной сфере они могут получать трехмерную информацию о форме самолета, обеспечивая точную поддержку данных для проектирования и производства самолета. .

5. Резюме

Камеры со структурированным светом Mech Mind играют важную роль в таких областях, как промышленная автоматизация и навигация роботов, благодаря их высокой точности, высокой скорости, большому полю обзора, большой глубине резкости, сильной устойчивости к окружающему свету, а также стабильности и надежности. Ожидается, что благодаря постоянному развитию технологий и постоянному расширению сценариев применения камеры со структурированным светом Mech Mind продемонстрируют свою уникальную ценность во многих областях.

Настройка среды разработки Python

Создайте виртуальную среду

Загрузите пакет opencv-python

Загрузите пакет захвата камеры Mecamander

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

Поэтапный анализ

Подключить камеру

  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

Отключить камеру

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

Собирайте 2D- и 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))

Полный тестовый код

  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()