Technologieaustausch

MechMind-Kamera mit strukturiertem Licht erfasst SDK-Python-Aufruf

2024-07-12

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

Testeffekt

Mech-Mind Strukturlichtkamera

Die Strukturlichtkameras von Mech Mind, insbesondere die Mech-Eye-Serie, sind hochpräzise 3D-Kameras in Industriequalität, die in der industriellen Automatisierung, Roboternavigation, Qualitätsprüfung und anderen Bereichen weit verbreitet sind. Im Folgenden finden Sie eine detaillierte Analyse der Strukturlichtkamera Mech Mind:

1. Produktübersicht

Die Strukturlichtkameras von Mech Mind, wie z. B. Mech-Eye PRO, nutzen Hochgeschwindigkeits-Strukturlichttechnologie, um eine hervorragende Umgebungslichtbeständigkeit zu bieten und gleichzeitig eine hohe Genauigkeit und Geschwindigkeit beizubehalten. Diese Kameras enthalten in der Regel umfangreiche Bildverarbeitungsalgorithmusmodule und können auf viele typische praktische Szenarien angewendet werden, wie z. B. das Be- und Entladen von Werkstücken in der Fertigung, hochpräzise Positionierung, Montage, Schraubenanziehen und akademische Forschung.

2. Funktionsprinzip

Die Strukturlichtkamera von Mech Mind nutzt hauptsächlich das Prinzip der Strukturlichtprojektion. Sie projizieren bestimmte Muster (z. B. von Lasern erzeugtes strukturiertes Licht) auf das zu fotografierende Objekt und die Umrisse und Form des Objekts werden von der Kamera erfasst. Diese Technologie kann die Position und Form eines Objekts genau berechnen, indem sie die Reflexion und Brechung des Lichts auf dem Objekt analysiert.

3. Produkteigenschaften

  1. Hohe Präzision : Die Strukturlichtkamera von Mech Mind kann in kurzer Zeit hochpräzise dreidimensionale Modelle erhalten. Für verschiedene Objekte können genaue Forminformationen in nur einer Aufnahme erhalten werden. Beispielsweise kann die Einzelpunktwiederholgenauigkeit in Z-Richtung des Mech-Eye PRO 0,05 mm (bei 1,0 m) erreichen.
  2. hohe Geschwindigkeit: Die Kamera verfügt über schnelle Datenerfassungs- und -verarbeitungsfunktionen. Die typische Erfassungszeit von Mech-Eye PRO beträgt beispielsweise 0,3 bis 0,6 Sekunden.
  3. Großes Sichtfeld und große Schärfentiefe: Einige Modelle, wie zum Beispiel die Mech-Eye Deep 3D-Kamera, zeichnen sich durch ein großes Sichtfeld und eine große Schärfentiefe aus und können auf eine Vielzahl gängiger Stapeltypen angewendet werden.
  4. Starke Beständigkeit gegen Umgebungslicht: Die Strukturlichtkamera von Mech Mind kann auch bei starken Umgebungslichtstörungen (z. B. >20000 lx) hervorragende Bildeffekte aufrechterhalten.
  5. Flexibler Einsatz: Die Kamera ist an die meisten gängigen Robotermarken im In- und Ausland angepasst und kann eine vollständige Bewegungssteuerung der angepassten Roboter erreichen.
  6. Offen und einfach zu bedienen: Die Kamera bietet eine benutzerfreundliche Benutzeroberfläche und eine offene API, um Benutzern die sekundäre Entwicklung und Integration zu erleichtern.
  7. Stabil und zuverlässig: Die Strukturlichtkameras von Mech Mind weisen eine hohe Stabilität und Zuverlässigkeit auf, wie z. B. die mittlere Zeit zwischen Ausfällen (MTBF) von Mech-Eye PRO ≥ 40.000 Stunden.

4. Anwendungsgebiete

Die Strukturlichtkameras von Mech Mind werden häufig in der Automobilindustrie, der Luftfahrt, dem Formenbau, der industriellen Automatisierung und anderen Bereichen eingesetzt. Im Automobilbereich können sie schnell und genau die Forminformationen der Karosserieoberfläche erhalten; im Luftfahrtbereich können sie die dreidimensionalen Forminformationen des Flugzeugs erhalten und so eine genaue Datenunterstützung für die Konstruktion und Herstellung des Flugzeugs bereitstellen .

5. Zusammenfassung

Die Strukturlichtkameras von Mech Mind spielen aufgrund ihrer hohen Präzision, hohen Geschwindigkeit, ihres großen Sichtfelds, ihrer großen Schärfentiefe, ihrer starken Beständigkeit gegen Umgebungslicht sowie ihrer Stabilität und Zuverlässigkeit eine wichtige Rolle in Bereichen wie der industriellen Automatisierung und der Roboternavigation. Mit der kontinuierlichen Weiterentwicklung der Technologie und der kontinuierlichen Erweiterung der Anwendungsszenarien wird erwartet, dass die Strukturlichtkameras von Mech Mind ihren einzigartigen Wert in mehr Bereichen unter Beweis stellen.

Richten Sie eine Python-Entwicklungsumgebung ein

Erstellen Sie eine virtuelle Umgebung

Laden Sie das opencv-python-Paket herunter

Laden Sie das Mecamander Camera Capture-Paket herunter

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

Schrittanalyse

Kamera anschließen

  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

Kamera trennen

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

Sammeln Sie 2D-Bilder und 3D-Bilder

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

Vollständiger Testcode

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