4. OpenMV IDE 概述

现在让我们来谈谈 OpenMV IDE。OpenMV IDE 是您将用来为 OpenMV Cam 编程的工具。它具有由 QtCreator 提供支持的强大文本编辑器,帧缓冲区查看器,直方图显示和集成的串行终端,用于从 OpenMV Cam 获取调试输出。

无论如何,IDE 或多或少是直接使用的。在 IDE 中花费了大量的精力来简化流程。然而,在 IDE 中有一些您应该了解的事项。

4.1. 文件菜单和示例

在 OpenMV IDE 的文件菜单中,您可以找到所有标准文本编辑器选项。新建、打开、保存、另存为、打印等。无论如何,当您创建一个新文件或打开一个文件时,它将出现在文本编辑器窗格中。请注意,您可以打开多个文件,可以通过单击显示当前文件名称的组合框在文件之间进行选择。OpenMV IDE 使用 QtCreator 作为文本编辑器后端,并且实际上支持在多个窗口中打开多个文件,并且具有水平和垂直拆分功能。但是,所有这些都被隐藏了,以便明确单击运行按钮时将运行哪个脚本,就像在 Arduino IDE 中一样。如果您想要在不同的编辑器中编辑脚本,或者您需要同时打开多个文件,请在您选择的编辑器中打开文件并进行操作。再次单击 OpenMV IDE 窗口时,OpenMV IDE 将自动检测文件是否已更改,并询问您是否要加载更改。

备注

您的计算机上只允许运行一个 OpenMV IDE 实例。这是为了当您尝试通过文件浏览器打开文件时,一个 OpenMV IDE 实例将打开文件。这还允许您使用拖放功能来打开文件。

接下来,在文件菜单下,您将找到示例菜单,其中包含大量显示如何使用 OpenMV Cam 不同功能的脚本。随着我们实现更多功能,将会出现更多示例。请确保熟悉示例脚本,以便有效地使用您的 OpenMV Cam。

对于个人脚本存储,OpenMV IDE 在您的文档文件夹中查找一个名为 “OpenMV” 的目录。OpenMV IDE 将在 文件 -> 文档文件夹 中显示 “OpenMV” 文件夹的内容。

最后,每当您在 OpenMV IDE 中创建一个新文件或打开一个示例脚本时,OpenMV IDE 将创建一个仅存储在内存中的文件副本,而不会像在 Arduino IDE 中那样存储在磁盘上。这样可以让您快速测试想法,而无需创建文件。

4.2. 文本编辑

OpenMV IDE 具有由 QtCreator 后端提供支持的专业文本编辑器。您可以在所有打开的文件中进行无限的撤消和重做,空白可视化(对于 MicroPython 很重要),字体大小控制,以及最重要的是 QtCreator 的查找和替换。查找和替换功能具有正则表达式匹配功能,可以在查找时捕获文本并在替换时使用该捕获的文本。此外,它还可以在替换时保留大小写。最后,查找和替换功能不仅适用于当前文件,而且还可以适用于文件夹中的所有文件或 OpenMV IDE 中打开的所有文件。

除了提供良好的文本编辑环境外,OpenMV IDE 还支持自动补全和关键字的悬停提示功能。例如,在 Python 中输入 . 后,OpenMV IDE 会检测到你即将输入一个函数或方法名,并显示一个自动补全文本框。输入函数/方法名后,它还会引导你填写参数。最后,如果你将鼠标光标悬停在任何关键字上,OpenMV IDE 会在工具提示中显示该关键字的文档。这两个功能让编写脚本变得更加轻松愉快!

4.3. 连接到您的 OpenMV Cam

连接到您的 OpenMV Cam 在之前的 硬件设置 教程页面中有详细介绍。一旦您解决了所有与编程固件等相关的启动问题,您只需单击 OpenMV IDE 左下角的连接按钮即可连接到您的 OpenMV Cam。

OpenMV IDE 在连接时是智能的,并自动过滤出所有不是 OpenMV Cam 的串行端口。如果您的计算机上只连接了一个 OpenMV Cam,它将立即找到并连接。如果您有两个 OpenMV Cam,则会询问您要连接到哪个串行端口。请注意,OpenMV IDE 将记住您的选择,因此下次连接时,您要连接的 OpenMV Cam 的串行端口将自动被选中。

连接到您的 OpenMV Cam 的串行端口后,OpenMV IDE 将尝试确定与您的 OpenMV Cam 关联的计算机上的 USB 闪存驱动器。OpenMV IDE 将在 USB 闪存驱动器上执行一些智能过滤,以自动连接到正确的驱动器(如果可能)。但是,它可能无法自动确定正确的驱动器,并且如果无法确定,则会请求您提供帮助。与上面的串行端口一样,OpenMV IDE 将记住您的选择,因此下次连接时,它将自动突出显示您之前的选择。

备注

OpenMV IDE 需要将您的 OpenMV Cam 上的 USB 闪存驱动器与 OpenMV Cam 的虚拟串行端口关联起来,以便它可以解析编译错误消息并轻松地打开具有错误的文件。它还需要驱动器信息来执行 保存打开的脚本到 OpenMV Cam 命令。也就是说,OpenMV IDE 仍然可以在不知道您的 OpenMV Cam 的 USB 闪存驱动器的情况下运行,并且将仅禁用依赖于此知识的功能。

最后,在连接到您的 OpenMV Cam 后,连接按钮将被替换为断开按钮。单击断开按钮以断开与您的 OpenMV Cam 的连接。请注意,断开连接将停止当前在您的 OpenMV Cam 上执行的任何脚本。您还可以在不断开连接的情况下直接从计算机上拔掉您的 OpenMV Cam,OpenMV IDE 将检测到并自动断开与您的 OpenMV Cam 的连接。如果您的 OpenMV Cam 崩溃了,OpenMV IDE 也会检测到并断开与您的 OpenMV Cam 的连接。

备注

在 Windows/Mac/Linux 上,如果您的 OpenMV Cam 变得无响应,则串行端口驱动程序可能会以一种可怕的方式崩溃。在 Windows 上,您会注意到这一点,即任务管理器中没有窗口的不可终止的 OpenMV IDE 进程。如果发生这种情况,则唯一的解决方法是重新启动计算机,因为无法终止的进程会阻止任何新的 OpenMV IDE 实例连接到任何 OpenMV Cam。这个问题存在于 Windows XP 以来的 Windows 中,是一个不修复的错误。在 Mac/Linux 上,这个问题也可能会发生,但是很难遇到。基本上,至少在 Windows 上,当 USB 虚拟串行端口驱动程序由于 OpenMV Cam 变得无响应而崩溃时,它从不让 OpenMV IDE 的串行线程从内核函数调用中返回,这使得 OpenMV IDE 的串行线程无法终止。无论如何,我们已经做了很多工作,以确保这种情况不会发生,但请注意它仍然可能发生。

4.4. 运行脚本

当您完成编辑代码,并准备运行脚本时,只需单击 OpenMV IDE 左下角的绿色运行按钮即可。然后,脚本将被发送到您的 OpenMV Cam 中,编译为 Python 字节码,并由您的 OpenMV Cam 执行。

如果脚本中存在任何错误,您的 OpenMV Cam 将在串口终端中发送回编译错误,OpenMV IDE 会自动解析错误。当 OpenMV IDE 检测到错误时,它将自动打开错误文件,并突出显示错误行,并显示一个漂亮的错误消息框。这个功能可以节省大量的时间来修复错误。

无论如何,如果您想停止脚本,只需点击停止按钮,在脚本运行时该按钮会替换运行按钮。请注意,脚本可以自动停止,要么是因为完成,要么是因为编译错误。在任一情况下,运行按钮将再次显示。

备注

当您单击运行按钮时,OpenMV IDE 会自动扫描您的脚本中的导入,并将任何缺失的外部所需脚本复制到您的 OpenMV Cam 上。当您单击运行按钮时,OpenMV IDE 还会自动更新您的 OpenMV Cam 上过时的外部模块。OpenMV IDE 首先在您个人的 “OpenMV” 文档文件夹中查找外部模块,然后在示例文件夹中查找外部模块。OpenMV IDE 能够解析单个文件模块和目录模块。

4.5. 帧缓冲区查看器

OpenMV IDE 特别之处在于集成的帧缓冲区查看器。这使您可以在处理代码时轻松查看您的 OpenMV Cam 正在查看的内容。

帧缓冲区查看器显示了您的 OpenMV Cam 的帧缓冲区之前的内容,当调用 sensor.snapshot() 时。无论如何,我们稍后会详细讨论。现在,这是您需要了解的有关帧缓冲区查看器的内容:

  • OpenMV IDE 右上角的 录制 按钮可以记录帧缓冲区中的内容。使用它快速创建您的 OpenMV Cam 所见的视频。请注意,录制是通过以 30 FPS 记录 OpenMV IDE 的帧缓冲区中的内容来完成的。但是,帧缓冲区的更新速度可能快于或慢于此,具体取决于应用程序。无论如何,录制完成后,OpenMV IDE 将使用 FFMPEG 将录制的内容转码为您想要分享的任何文件格式。

  • OpenMV IDE 右上角的 缩放 按钮控制帧缓冲区查看器的缩放功能。启用或禁用该功能。

  • OpenMV IDE 右上角的 禁用 按钮控制您的 OpenMV Cam 是否将图像发送到 OpenMV IDE。基本上,您的 OpenMV Cam 必须不断地对图像进行 JPEG 压缩,以将其流式传输到 OpenMV IDE。这会降低性能。因此,如果您想要查看您的 OpenMV Cam 的脚本在实际运行时在不连接 OpenMV Cam 到计算机的情况下将以多快的速度运行,只需单击 禁用 按钮即可。在禁用帧缓冲区后,您将无法再看到您的 OpenMV Cam 正在查看的内容,但是您仍然可以在串行终端中看到您的 OpenMV Cam 的调试输出。

最后,您可以右键单击帧缓冲区中的任何图像以将该图像保存到磁盘。此外,如果您在帧缓冲区中选择一个区域(单击并拖动),则可以将该区域保存到磁盘。请注意,在尝试保存帧缓冲区到磁盘之前,您应该停止脚本。否则,您可能无法获得所需的确切帧。

要取消帧缓冲区中的选择区域,请单击而不拖动到任何地方即可删除选择。但是,在取消选择时可能会创建一个像素的选择,因此请尝试在帧缓冲区的空白区域单击。

4.6. 直方图显示

OpenMV IDE 中集成的直方图显示主要是为了填充帧缓冲区查看器下方的空白空间,并为您提供一些眼睛上的糖果。但是,它实际上还可用于提供有关房间光线质量、确定颜色跟踪设置以及一般给出有关您的 OpenMV Cam 正在查看的图像质量的想法的反馈。

您可以在直方图中选择四种不同的颜色空间之一。RGB、灰度、LAB 和 YUV。仅灰度和 LAB 对于通过编程控制您的 OpenMV Cam 是有用的。RGB 用于视觉上观看很好,而 YUV 则是因为我们在 JPEG 压缩中使用它,并且我们可能也会添加它。

无论如何,默认情况下,直方图显示整个图像的信息。但是,如果您在帧缓冲区上选择一个区域(单击并拖动),则直方图将仅显示该区域中的颜色分布。此功能使直方图显示对于确定您需要在脚本中使用的正确灰度和 LAB 颜色通道设置以供 Image.find_blobs()Image.binary() 使用非常有用。

最后,显示在直方图图表上方的是图像分辨率和您选定区域边界框的 ROI(x、y、w、h)。

4.7. 串行终端

要显示串行终端,请单击 OpenMV IDE 底部的串行终端按钮。串行终端内置到主窗口中以便更易于使用。它只是与您的文本编辑窗口分割。

无论如何,您的 OpenMV Cam 通过 print 创建的所有调试文本都将显示在串行终端中。除此之外,没有其他值得一提的东西。

请注意,串行终端或多或少会无限缓冲文本。它将在 RAM 中保留最后一百万行文本。因此,您可以使用它来缓冲大量的调试输出。另外,如果您在 Windows/Linux 上按 ctrl+f,或者在 Mac 上按相应的快捷键,您将能够搜索调试输出。最后,如果您想查看先前的调试输出,而不希望自动滚动,则串行终端足够智能,不会自动滚动。如果您将文本输出滚动到底部,则会再次启用自动滚动。

4.8. 状态栏

在状态栏中,OpenMV IDE 将显示您的 OpenMV Cam 的固件版本、串行端口、驱动器和 FPS。固件版本标签实际上是一个按钮,您可以单击以更新您的 OpenMV Cam如果您的 OpenMV Cam 的固件已过时。串行端口标签只显示您的 OpenMV Cam 的串行端口,而不显示其他内容。驱动器标签是另一个按钮,您可以单击它以更改与您的 OpenMV Cam 关联的驱动器。最后,FPS 标签显示 OpenMV IDE 从您的 OpenMV Cam 获取的 FPS。

备注

OpenMV IDE 显示的 FPS 可能与您的 OpenMV Cam 的 FPS 不匹配。OpenMV IDE 上显示的 FPS 是 OpenMV IDE 从您的 OpenMV Cam 获取的 FPS。但是,您的 OpenMV Cam 有时可能比 OpenMV IDE 更快地运行,而且 OpenMV IDE 仅从您的 OpenMV Cam 中的某些帧中抽样,而不是全部帧。无论如何,OpenMV IDE 的 FPS 永远不会比您的 OpenMV Cam 的 FPS 快,但可能会更慢。

4.9. 工具

在OpenMV IDE的工具菜单下,您将找到用于OpenMV Cam的一些有用工具。特别是,将打开的脚本保存到您的OpenMV Cam重置OpenMV Cam 工具在开发应用程序时非常有用。

  • 配置OpenMV Cam设置文件 允许您使用OpenMV IDE修改存储在OpenMV Cam上的一个 .ini 文件,您的OpenMV Cam将在启动时读取特定的硬件配置。

  • 将打开的脚本保存到您的OpenMV Cam 命令会将您当前查看的任何脚本保存到您的OpenMV Cam。此外,它还可以自动删除脚本中的空格和注释,以便占用更少的空间。一旦您认为您的程序已准备好在没有OpenMV IDE的情况下部署,请使用此命令。请注意,此命令将您的脚本保存为您的OpenMV Cam的USB闪存驱动器上的 main.pymain.py 是您的OpenMV Cam在完成引导后将运行的脚本。

  • 重置OpenMV Cam 命令会重置然后断开与您的OpenMV Cam的连接。如果您运行的脚本会在您的OpenMV Cam上创建文件,您将需要使用此选项,因为Windows/Mac/Linux不会显示通过Python脚本在OpenMV Cam上以编程方式创建的任何文件,一旦您的OpenMV Cam的USB闪存驱动器被挂载。

接下来,在工具菜单下,您可以调用引导加载程序来重新编程您的OpenMV Cam。只有在OpenMV IDE断开连接时,才能调用引导加载程序。您可以使用二进制 .bin 文件或 .dfu 文件重新编程您的OpenMV Cam。引导加载程序功能仅供计划更改默认OpenMV Cam固件的高级用户使用。

4.10. WiFi调试

如果您想通过WiFi调试您的相机,并且有一个WINC1500扩展板,您可以使用 工具->配置OpenMV Cam设置文件 对话框来设置您的OpenMV Cam以通过WiFi连接到IDE(请确保您的OpenMV Cam可以首先运行WiFi示例,并且您的固件和WiFi模块固件是最新的,在启用WiFi调试之前)。

一旦启用了WiFi调试,您的OpenMV Cam将在打开时连接到您的WiFi网络(或创建一个)。在此期间,板载的状态LED将为纯白色。连接后,OpenMV IDE将在连接按钮上显示一个WiFi图标。当您单击连接时,OpenMV IDE将提供通过WiFi连接到您的OpenMV Cam的选项。

通过WiFi连接时,您可以做任何事情,但无法使用您的OpenMV Cam的文件系统(除非您的OpenMV Cam仍通过USB连接到计算机)。

4.11. 打开终端

打开终端功能允许您使用OpenMV IDE创建新的串行终端,以便在OpenMV Cam未连接到计算机时远程调试您的OpenMV Cam。打开终端功能也可用于编程任何MicroPython开发板。

您可以使用打开终端功能来打开连接到串行端口、tcp端口或udp端口的终端。请注意,串行端口可以是用于无线连接蓝牙端口。

4.12. 机器视觉

机器视觉子菜单包含许多针对您的OpenMV Cam的机器视觉工具。例如,您可以使用颜色阈值编辑器获取 image.find_blobs() 的最佳颜色跟踪阈值。我们将定期提供新的机器视觉工具,以使您的生活更加轻松。

4.13. 视频工具

如果您需要压缩由您的OpenMV Cam生成的 .gif 文件,或将 .mjpeg 或ImageIO .bin 视频文件转换为 .mp4,您可以使用转换视频文件操作来执行此操作。或者,如果您只想播放这些视频,也可以使用播放视频文件操作。

请注意,在播放视频之前,您应首先将视频文件从您的OpenMV Cam的闪存驱动器复制到计算机上,因为在您的OpenMV Cam上通过USB进行磁盘I/O很慢。

最后,FFMPEG 被用于提供转换和视频播放支持,并且可以用于任何非 OpenMV Cam 的活动。FFMPEG 能够转换/播放大量的文件格式。

  • 要将视频文件转换为一组图片,请将视频文件选择为源文件,并将目标设置为“%07d.bmp”/“%07d.jpg”/等文件名。FFMPEG能理解带有图像文件格式扩展名的 printf() 的格式语句,这表示它应将视频文件分割为目标格式的静止图像。

  • 要将一系列静止图像转换为视频,请将源文件名设置为“%7d.bmp”/“%7d.jpg”/等,其中目录中的所有图像都具有像 1.bmp2.bmp 等的名称。FFMPEG理解类似于 printf() 的格式语句,其中包含一个图像文件格式扩展名,表示它应将这些图像文件合并成一个视频。

  • 要将 ImageIO 文件转换为任何其他视频格式,请选择文件作为源文件,并将目标设置为您想要的任何文件格式。

  • 要将任何格式的视频文件转换为 ImageIO 文件,请选择您要转换的视频文件作为源文件,并将目标设置为一个 .bin 文件。然后,FFMPEG将视频分解为JPG,并且OpenMV IDE将这些JPG转换为使用 ImageIO 文件格式保存到 .bin 文件的RAW灰度或RGB565帧。

  • 要优化由您的OpenMV Cam保存的 .gif 文件以用于Web,请将源文件设置为该 .gif,将目标文件设置为另一个 .gif

  • 要将您的OpenMV Cam保存的MJPEG文件转换为另一种格式,请将MJPEG文件设置为源文件,并将另一种格式的另一个文件(如 .mp4)设置为目标。

4.14. 选项

在工菜单(或Mac上的About菜单)下,您可以访问OpenMV IDE的选项对话框。

您可以配置编辑器字体、大小、缩放、制表符行为、自动清理空格、为喜欢将行数保持在80个字符的人设置列边距等等。