Compartilhamento de tecnologia

Imagem de câmera de luz estruturada MechMind capturando chamada SDK python

2024-07-12

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

Efeito de teste

Câmera de luz estruturada Mech-Mind

As câmeras de luz estruturada da Mech Mind, especialmente a série Mech-Eye, são câmeras 3D de alta precisão de nível industrial que são amplamente utilizadas em automação industrial, navegação de robôs, inspeção de qualidade e outros campos. A seguir está uma análise detalhada da câmera de luz estruturada Mech Mind:

1. Visão geral do produto

As câmeras de luz estruturada da Mech Mind, como a Mech-Eye PRO, usam tecnologia de luz estruturada de alta velocidade para fornecer excelente resistência à luz ambiente, mantendo alta precisão e velocidade. Essas câmeras geralmente contêm módulos de algoritmo de visão ricos e podem ser aplicadas a muitos cenários práticos típicos, como carga e descarga de peças de fabricação, posicionamento de alta precisão, montagem, aperto de parafusos e pesquisa acadêmica.

2. Princípio de funcionamento

A câmera de luz estruturada da Mech Mind utiliza principalmente o princípio da projeção de luz estruturada. Eles projetam padrões específicos (como luz estruturada gerada por lasers) no objeto que está sendo fotografado, e o contorno e a forma do objeto são capturados pela câmera. Esta tecnologia pode calcular com precisão a posição e a forma de um objeto, analisando a reflexão e a refração da luz no objeto.

3. Características do produto

  1. Alta precisão : A câmera de luz estruturada do Mech Mind pode obter modelos tridimensionais de alta precisão em um curto espaço de tempo. Para diferentes objetos, informações precisas de forma podem ser obtidas em apenas uma foto. Por exemplo, a repetibilidade de ponto único na direção Z do Mech-Eye PRO pode atingir 0,05 mm (a 1,0 m).
  2. alta velocidade: A câmera possui recursos rápidos de aquisição e processamento de dados. Por exemplo, o tempo típico de aquisição do Mech-Eye PRO é de 0,3 a 0,6 segundos.
  3. Grande campo de visão e grande profundidade de campo: Alguns modelos, como a câmera Mech-Eye Deep 3D, possuem características de grande campo de visão e grande profundidade de campo e podem ser aplicados a uma variedade de tipos de empilhamento comuns.
  4. Forte resistência à luz ambiente: A câmera de luz estruturada do Mech Mind ainda pode manter excelentes efeitos de imagem sob forte interferência de luz ambiente (como> 20.000lx).
  5. Implantação flexível: A câmera é adaptada à maioria das principais marcas de robôs no país e no exterior e pode obter controle completo de movimento dos robôs adaptados.
  6. Aberto e fácil de usar: A câmera fornece uma interface de usuário amigável e API aberta para facilitar o desenvolvimento e integração secundária dos usuários.
  7. Estável e confiável: As câmeras de luz estruturadas do Mech Mind possuem alta estabilidade e confiabilidade, como o tempo médio entre falhas (MTBF) do Mech-Eye PRO ≥ 40.000 horas.

4. Áreas de aplicação

As câmeras de luz estruturadas da Mech Mind são amplamente utilizadas em automóveis, aviação, fabricação de moldes, automação industrial e outros campos. No campo automotivo, eles podem obter com rapidez e precisão as informações de formato da superfície da carroceria do carro; no campo da aviação, eles podem obter as informações de formato tridimensional da aeronave, fornecendo suporte de dados precisos para o projeto e fabricação da aeronave; .

5. Resumo

As câmeras de luz estruturadas da Mech Mind desempenham um papel importante em áreas como automação industrial e navegação de robôs devido à sua alta precisão, alta velocidade, grande campo de visão, grande profundidade de campo, forte resistência à luz ambiente e estabilidade e confiabilidade. Com o avanço contínuo da tecnologia e a expansão contínua dos cenários de aplicação, espera-se que as câmeras de luz estruturadas da Mech Mind demonstrem seu valor único em mais campos.

Configure um ambiente de desenvolvimento Python

Crie um ambiente virtual

Baixe o pacote opencv-python

Baixe o pacote de captura de câmera Mecamander

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

Análise de etapas

Conectar câmera

  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 câmera

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

Colete imagens 2D e imagens 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 teste 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()