同时控制步进电机和相机

时间:2019-09-26 15:05:24

标签: python opencv ubuntu camera pyusb

同时控制步进电机和摄像机的最佳方法是什么?

假设将摄像机放置在线性平台(步进电机)上,我想以1毫米的步长移动平台,并在每一步结束时捕获一帧。两个设备(相机和舞台)都通过2个不同的USB 2.0端口连接到我的计算机(Ubuntu 18.04.3 LTS)。

我的摄像头脚本如下:

def camera():
    ...
    ...
    ...
    while(True):
        cv2.imshow('live', frame)
        ueye.is_ExitCamera(hCam2)
        cv2.destroyAllWindows()

if __name__ == "__main__":
    camera()

并从摄像机输出实时广播。

对于电动机,例如:

i = 0
while i < 6:           # Move 6 times
    stepper.Move(0.5)  # Moves forward by 0.5 mm
    time.sleep(1)      # Sleeps for a second
    i += 1

time.sleep(2)
print("\nProcess End\n")
close()                # closes port 

,然后根据需要移动并入睡。

两个脚本分别执行时成功运行。但是,如何结合这些脚本,以便可以在每个步骤的最后拍照?对于上面移动6次的示例,我想最后获得6张图像,并在每个步骤的末尾捕获。一个应该使用多线程,多处理吗?...两个设备都通过2个单独的USB 2.0端口连接到我的计算机。我不是编程的初学者,但也不是专家,因此,任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

有一个原因导致您无法在某些步骤上调用某些捕获图像的函数?

# import modules for camera and stepper control

def step_and_capture(steps=6):
  images = []
  for x in range(steps):
    stepper.Move(0.5)
    image = cam_capture_method() # returns a photo or it could write to somewhere
    time.sleep(1)
  # save the images to folder?

if __name__ == "__main__":
    step_and_capture()