Berbagi teknologi

Gambar kamera ringan terstruktur MechMind menangkap panggilan python SDK

2024-07-12

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

Efek tes

Kamera cahaya terstruktur Mech-Mind

Kamera cahaya terstruktur Mech Mind, khususnya seri Mech-Eye, adalah kamera 3D presisi tinggi kelas industri yang banyak digunakan dalam otomasi industri, navigasi robot, pemeriksaan kualitas, dan bidang lainnya. Berikut ini adalah analisis detail kamera cahaya terstruktur Mech Mind:

1. Ikhtisar Produk

Kamera cahaya terstruktur Mech Mind, seperti Mech-Eye PRO, menggunakan teknologi cahaya terstruktur berkecepatan tinggi untuk memberikan ketahanan cahaya sekitar yang sangat baik dengan tetap menjaga akurasi dan kecepatan tinggi. Kamera ini biasanya berisi modul algoritma visi yang kaya dan dapat diterapkan pada banyak skenario praktis umum, seperti pembuatan dan pembongkaran benda kerja, penentuan posisi presisi tinggi, perakitan, pengencangan sekrup, dan penelitian akademis.

2. Prinsip kerja

Kamera cahaya terstruktur Mech Mind terutama menggunakan prinsip proyeksi cahaya terstruktur. Mereka memproyeksikan pola tertentu (seperti cahaya terstruktur yang dihasilkan oleh laser) ke objek yang difoto, dan garis besar serta bentuk objek ditangkap oleh kamera. Teknologi ini dapat menghitung posisi dan bentuk suatu benda secara akurat dengan menganalisis pantulan dan pembiasan cahaya pada benda tersebut.

3. Fitur produk

  1. Presisi tinggi : Kamera cahaya terstruktur Mech Mind dapat memperoleh model tiga dimensi presisi tinggi dalam waktu singkat. Untuk objek yang berbeda, informasi bentuk yang akurat dapat diperoleh hanya dalam satu bidikan. Misalnya saja, pengulangan satu titik arah Z pada Mech-Eye PRO dapat mencapai 0,05 mm (pada jarak 1,0 m).
  2. kecepatan tinggi: Kamera memiliki kemampuan akuisisi dan pemrosesan data yang cepat. Misalnya, waktu akuisisi khas Mech-Eye PRO adalah 0,3~0,6 detik.
  3. Bidang pandang yang luas dan kedalaman bidang yang besar: Beberapa model, seperti kamera Mech-Eye Deep 3D, memiliki karakteristik bidang pandang yang luas dan kedalaman bidang yang besar, serta dapat diterapkan pada berbagai jenis penumpukan umum.
  4. Ketahanan yang kuat terhadap cahaya sekitar: Kamera cahaya terstruktur Mech Mind masih dapat mempertahankan efek pencitraan yang sangat baik di bawah gangguan cahaya sekitar yang kuat (seperti >20000lx).
  5. Penerapan yang fleksibel: Kamera disesuaikan dengan sebagian besar merek robot utama di dalam dan luar negeri, dan dapat mencapai kontrol gerak penuh dari robot yang diadaptasi.
  6. Terbuka dan mudah digunakan: Kamera menyediakan antarmuka pengguna yang ramah dan API terbuka untuk memfasilitasi pengembangan dan integrasi sekunder pengguna.
  7. Stabil dan dapat diandalkan: Kamera cahaya terstruktur Mech Mind memiliki stabilitas dan keandalan yang tinggi, seperti waktu rata-rata antar kegagalan (MTBF) Mech-Eye PRO ≥ 40.000 jam.

4. Area aplikasi

Kamera cahaya terstruktur Mech Mind banyak digunakan di bidang otomotif, penerbangan, pembuatan cetakan, otomasi industri, dan bidang lainnya. Di bidang otomotif, mereka dapat dengan cepat dan akurat memperoleh informasi bentuk permukaan badan mobil; di bidang penerbangan, mereka dapat memperoleh informasi bentuk tiga dimensi pesawat, memberikan dukungan data yang akurat untuk desain dan pembuatan pesawat. .

5. Ringkasan

Kamera cahaya terstruktur Mech Mind memainkan peran penting dalam bidang-bidang seperti otomasi industri dan navigasi robot karena presisi tinggi, kecepatan tinggi, bidang pandang yang luas, kedalaman bidang yang besar, ketahanan yang kuat terhadap cahaya sekitar, serta stabilitas dan keandalan. Dengan kemajuan teknologi yang berkelanjutan dan perluasan skenario aplikasi yang berkelanjutan, kamera cahaya terstruktur Mech Mind diharapkan dapat menunjukkan nilai uniknya di lebih banyak bidang.

Siapkan lingkungan pengembangan Python

Ciptakan lingkungan virtual

Unduh paket opencv-python

Unduh Paket Pengambilan Kamera Mecamander

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

Analisis langkah

Hubungkan kamera

  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

Putuskan sambungan kamera

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

Kumpulkan gambar 2D dan gambar 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))

Kode tes lengkap

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