Κοινή χρήση τεχνολογίας

MechMind δομημένη ελαφριά εικόνα κάμερας που καταγράφει κλήση python SDK

2024-07-12

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

Εφέ δοκιμής

Κάμερα δομημένου φωτός Mech-Mind

Οι κάμερες δομημένου φωτός της Mech Mind, ειδικά η σειρά Mech-Eye, είναι τρισδιάστατες κάμερες υψηλής ακρίβειας βιομηχανικής ποιότητας που χρησιμοποιούνται ευρέως στον βιομηχανικό αυτοματισμό, την πλοήγηση με ρομπότ, την επιθεώρηση ποιότητας και άλλους τομείς. Ακολουθεί μια λεπτομερής ανάλυση της κάμερας δομημένου φωτός Mech Mind:

1. Επισκόπηση προϊόντος

Οι κάμερες δομημένου φωτός της Mech Mind, όπως η Mech-Eye PRO, χρησιμοποιούν τεχνολογία δομημένου φωτός υψηλής ταχύτητας για να παρέχουν εξαιρετική αντίσταση στο φως περιβάλλοντος διατηρώντας παράλληλα υψηλή ακρίβεια και ταχύτητα. Αυτές οι κάμερες συνήθως περιέχουν πλούσια ενότητες αλγορίθμου όρασης και μπορούν να εφαρμοστούν σε πολλά τυπικά πρακτικά σενάρια, όπως η κατασκευή φόρτωσης και εκφόρτωσης τεμαχίου, τοποθέτηση υψηλής ακρίβειας, συναρμολόγηση, σύσφιξη βιδών και ακαδημαϊκή έρευνα.

2. Αρχή λειτουργίας

Η κάμερα δομημένου φωτός της Mech Mind χρησιμοποιεί κυρίως την αρχή της προβολής δομημένου φωτός. Προβάλλουν συγκεκριμένα μοτίβα (όπως δομημένο φως που παράγεται από λέιζερ) στο αντικείμενο που φωτογραφίζεται και το περίγραμμα και το σχήμα του αντικειμένου καταγράφονται από την κάμερα. Αυτή η τεχνολογία μπορεί να υπολογίσει με ακρίβεια τη θέση και το σχήμα ενός αντικειμένου αναλύοντας την ανάκλαση και τη διάθλαση του φωτός στο αντικείμενο.

3. Χαρακτηριστικά προϊόντος

  1. Υψηλή ακρίβεια : Η κάμερα δομημένου φωτός της Mech Mind μπορεί να αποκτήσει τρισδιάστατα μοντέλα υψηλής ακρίβειας σε σύντομο χρονικό διάστημα. Για παράδειγμα, η επαναληψιμότητα ενός σημείου με κατεύθυνση Z του Mech-Eye PRO μπορεί να φτάσει τα 0,05 mm (στο 1,0 m).
  2. υψηλή ταχύτητα: Η κάμερα έχει δυνατότητες γρήγορης απόκτησης και επεξεργασίας δεδομένων. Για παράδειγμα, ο τυπικός χρόνος απόκτησης του Mech-Eye PRO είναι 0,3~0,6 δευτερόλεπτα.
  3. Μεγάλο οπτικό πεδίο και μεγάλο βάθος πεδίου: Ορισμένα μοντέλα, όπως η κάμερα Mech-Eye Deep 3D, έχουν τα χαρακτηριστικά μεγάλου οπτικού πεδίου και μεγάλου βάθους πεδίου και μπορούν να εφαρμοστούν σε μια ποικιλία κοινών τύπων στοίβαξης.
  4. Ισχυρή αντοχή στο φως του περιβάλλοντος: Η κάμερα δομημένου φωτός της Mech Mind μπορεί ακόμα να διατηρήσει εξαιρετικά εφέ απεικόνισης κάτω από ισχυρές παρεμβολές φωτός περιβάλλοντος (όπως >20000lx).
  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 και τρισδιάστατες εικόνες

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