OpenFlexure显微镜的Python客户端代码

openflexure-microscope-pyclient的Python项目详细描述


OpenFlexure显微镜的Python客户端

OpenFlexure Microscope通常由两个软件控制OpenFlexure Microscope Server,它是用Python编写的,运行在嵌入式的Raspberry Pi上,和{a3}这是一个用电子编写的图形界面,可以在树莓Pi上运行,也可以通过网络连接在另一台计算机上运行。然而,如果你想写你自己的脚本来执行特定的实验或协议,最好不要把它们嵌入eV或者把它们打包成插件。这个库的存在使得从一个简单的Python脚本(既可以在Raspberry Pi上运行,也可以通过网络运行)来轻松地控制显微镜。我特别喜欢用笔记本电脑上的Jupyter笔记本电脑,因为它可以让我边走边绘图和显示图像。在

安装

这是一个单独的文件模块,所以现在您只需复制Python文件。希望我们能在不久的将来把它设置成一个pip安装包。在

使用

连接显微镜

您可以通过指定主机名或IP地址或使用MDN连接到显微镜。如果您的网络相对简单,并且您可以在eV的“附近设备”部分看到您的显微镜,那么mDNS是连接显微镜的零故障方式:

importopenflexure_microscope_clientasofm_clientmicroscope=ofm_client.find_first_microscope()

如果您的网络比较复杂,或者您知道显微镜的地址,则可以使用主机名或IP地址进行连接。默认情况下,您的显微镜将声明自己为microscope.local,尽管这也依赖于mDNS,因此如果上面的方法不起作用,microscope.local也可能不起作用。在

^{pr2}$

检查连接

通常,我会运行一些命令来检查显微镜是否正常工作:

pos=microscope.positionstarting_pos=pos.copy()pos['x']+=100microscope.move(pos)assertmicroscope.position==pospos['x']-=100microscope.move(pos)assertmicroscope.position==starting_pos# Check the microscope will autofocusret=microscope.autofocus()# Acquire an image for sanity-checking tooimage=microscope.grab_image()f,ax=plt.subplots(1,1)ax.imshow(np.array(image))#print(image.metadata)print("Active microscope extensions")forkinmicroscope.extensions.keys():print(k)

运行此块后,您应该会看到当前活动的扩展列表,以及显微镜拍摄的图片。考虑到我们只是自动对焦,这个图像应该是好的和锐利的!在

基本命令

有几个基本命令内置为MicroscopeClient对象的方法:

  • position是一个属性,它返回一个包含'x''y''z'组件的字典,给出阶段的位置。在
  • get_position_array()返回具有相同位置的3元素numpy数组。在
  • move(position)接受position返回的3元素数组或字典,并执行绝对移动
  • move_rel(displacement)执行相对移动(即提供0将不会移动该轴)
  • capture_image()将从相机获取一个新图像,并将其作为PIL图像对象返回
  • grab_image()将返回相机在其MJPEG预览流中发送的下一个图像(即,它比capture_image()更快但质量更低)
  • grab_image_array()numpy数组的形式返回图像。在
  • autofocus()运行快速自动对焦例程,就像单击eV中的“自动对焦”按钮一样

扩展

要运行显微镜扩展提供的方法,可以使用extensions字典来发出get或{}请求:

microscope.extensions["your.extension.name"]["link_name"].get()microscope.extensions["your.extension.name"]["link_name"].post_json({"key":"value"})

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我们可以使用java for loop with switch语句。。?   java如何从具有循环关系的数据集生成树?   使用s:mvcUrl标记时java Spring启动问题   javascript Wicket调色板水平滚动条在firefox中不显示   java如何清理Maven插件绑定?   java将文件从设备发送到计算机不起作用(文件被破坏)   Java GPU编程的性能   java字符串标记器问题   连接Java LDAP断开连接   java Android GridView将无法确定正确的位置   java AlarmManager在指定时间未显示toast消息   MVC中的java测试外观|断言返回类型   logcat上的java Android运行时错误   java Building Workspace在Eclipse中遇到错误   堆栈溢出尾部递归遗传算法抛出“awteventque0”java。StackOverflowerr语言   java ArrayOutOfBounds测试代码不工作   java有没有像Moodle这样流行的课程管理系统?   java如何从jsp获取xml文件作为响应