OpenMV IDE 概述 =================== 现在我们来谈谈OpenMV IDE。OpenMV IDE是您用来编程OpenMV Cam的工具。它具有一个由QtCreator支持的功能强大的文本编辑器, 一个帧缓冲器查看器,直方图显示器,以及一个用于OpenMV调试输出的集成串行终端。 无论如何,IDE是或多或少可以直接使用。我们在IDE中放入了许多东西,在IDE中您应该了解几件事情。 文件菜单和示例代码 ---------------------- 在OpenMV IDE的文件菜单下,您可以使用所有的标准文本编辑器选项。新建,打开,保存,另存为,打印等。无论如何, 当你创建一个新的文件或打开一个文件,它会出现在文本编辑器窗格中。请注意,您可以打开多个文件, 您可以通过单击显示当前文件名称的组合框进行选择。OpenMV IDE使用QtCreator作为文本编辑器的后端, 实际上支持在多个窗口中打开多个文件,具有水平和垂直分割功能。然而,所有这一切都是隐藏的, 以便明确哪些脚本将在单击运行按钮时运行,就像Arduino IDE一样。如果您想在不同的编辑器中编辑脚本, 或者需要一次打开多个文件,只需在您选择的编辑器中打开文件并对其进行处理即可。 .. note:: 一次只能在您的计算机上使用OpenMV IDE的一个实例。 这样做是为了如果您尝试通过文件资源管理器打开文件,OpenMV IDE的一个实例将打开该文件。这也使您可以使用拖放功能打开文件。 继续,在文件菜单下,您会看到示例菜单,其中有大量的脚本展示了如何使用OpenMV Cam的不同功能。 随着我们实现更多的功能,将会出现更多的例子。确保熟悉示例脚本,以便您可以有效地使用OpenMV。 对于个人脚本存储,OpenMV IDE会在您的文档文件夹中查找“OpenMV”目录。 OpenMV IDE将在 文件 ->文件夹 中显示“OpenMV”文件夹的内容。 最后,无论何时在OpenMV IDE中创建一个新文件或打开示例脚本, OpenMV IDE都会创建一个不需要存储在磁盘上的文件副本,就像在Arduino IDE中一样。这让您快速测试出创意,而无需创建文件。 文本编辑 ------------ OpenMV IDE有一个由QtCreator后端支持的专业文本编辑器。 您可以对所有打开的文件进行无限撤消和重做,空格可视化(对于MicroPython非常重要),字体大小的控制以及QtCreator查找和替换等。 查找和替换功能正则表达式与查找过程中捕获文本的能力相匹配,并使用捕获的文本进行替换。此外, 它也可以在更换时保存大小写。最后,查找和替换功能不仅在当前文件上起作用,而且还可以在文件夹中 的所有文件或OpenMV IDE中的所有打开的文件上起作用。 除了漂亮的文本编辑环境之外,OpenMV IDE还提供关于关键字的自动完成支持悬停工具提示。因此, 例如在OpenMV IDE中用python输入 ``.`` 后,将会检测到您即将编写函数或方法名称,并会显示一个自动完成文本框。 一旦你写了函数/方法的名字,它也将引导你写入参数。最后,如果将鼠标光标悬停在任何关键字上, OpenMV IDE将在工具提示中显示该关键字的文档。这两个特性使编辑脚本变得愉快! 连接到您的OpenMV Cam ----------------------------- 连接到您的OpenMV在上一个教程页面 ``Hardware Setup`` 有详细介绍 。一旦解决来所有涉及编程固件等的启动问题, 只需点击OpenMV IDE左下角的连接按钮即可连接到您的OpenMV。 OpenMV IDE智能地连接并自动过滤所有不是OpenMV Cam的串行端口。如果只有一个OpenMV连接到您的电脑, 它会发现它,并立即连接。如果您有两个OpenMV,它会询问您连接到哪个串行端口。请注意,OpenMV IDE将记住您的选择, 以便下次如果连接OpenMV Cam的串行端口,您想连接的那个串行端口已经被选中。 连接到您的OpenMV Cam的串行端口后,OpenMV IDE将尝试确定与您的OpenMV Cam相关的计算机上的USB闪存驱动器。 OpenMV IDE会对USB闪存驱动器进行一些智能过滤,以便在可能的情况下自动连接到正确的USB闪存驱动器。 然而,它可能无法自动确定正确的一个,并会要求你帮忙,如果不行的话。与上面的串口一样, OpenMV IDE将记住您的选择,因此下次连接时会自动突出显示您以前的选择。 .. note:: OpenMV IDE需要将OpenMV Cam上的USB闪存与您的OpenMV Cam的虚拟串行端口相关联, 以便它可以解析编译错误消息并轻松打开带有错误的文件。它也需要 ``Save open script to OpenMV Cam`` 命令的驱动信息。这就是说, OpenMV IDE仍然可以在不知道OpenMV Cam的USB闪存驱动器的情况下运行, 并且只会禁用依赖于此知识的功能。 最后,连接到OpenMV Cam后,连接按钮将被替换为断开按钮。点击断开连接按钮,断开您的OpenMV。 请注意,断开连接会停止OpenMV Cam上正在执行的任何脚本。您也可以直接从电脑上拔下OpenMV Cam, 而无需断开连接,而OpenMV IDE将检测到并自动断开您的OpenMV Cam。如果您的OpenMV崩溃, OpenMV IDE也会检测到这一点,并断开您的OpenMV。 .. note:: 如果您的OpenMV Cam无响应,可能是在Windows / Mac / Linux上的串口驱动程序崩溃。 在Windows上,您将注意到这是一个不可操作的OpenMV IDE进程,在任务管理器中没有任何窗口。 如果发生这种情况唯一的办法是重新启动计算机,因为杀不死的进程将阻止任何OpenMV IDE的新实例连接到任何OpenMV。 这个问题的存在是因为自Windows XP以来一直存在的未修复Windows bug。 在Mac / Linux上,同样的问题可能会发生,但更难遇到。基本上,至少在Windows上发生的事情是, 当USB虚拟串行端口驱动程序从OpenMV Cam崩溃变为无响应时,永远不会让OpenMV IDE的串行线程从内核函数调用中返回, 这使得OpenMV IDE的串行线程不可用。无论如何,我们做了大量工作来确保它不会发生,但要注意它仍有发生的可能。 运行脚本 --------------- 完成编辑代码并准备运行脚本后,只需单击OpenMV IDE左下角的绿色运行按钮即可。 该脚本将被发送到您的OpenMV编译成Python字节码,并由您的OpenMV凸轮执行。 如果您的脚本中有任何错误,您的OpenMV Cam将发回编译错误显示在terminal中,OpenMV IDE将自动解析查找错误。 当OpenMV IDE检测到错误时,它会自动打开错误的文件,并突出显示错误的行,同时显示一个错误消息框。这个功能可以节省大量的时间修复错误。 无论如何,如果你想停止脚本,只需点击停止按钮(在脚本运行时替换运行按钮)。请注意,由于程序运行结束或编译错误,脚本可以自动停止。 无论哪种情况,运行按钮都会再次出现。 .. note:: 单击运行按钮时,OpenMV IDE会自动扫描脚本中的导入,并复制OpenMV Cam中缺少的任何外部所需脚本。 当您单击“运行”按钮时,OpenMV IDE还将自动更新OpenMV Cam上任何过时的外部模块。 OpenMV IDE首先在您的个人“OpenMV”文档文件夹中查找外部模块,然后查找示例文件夹。 OpenMV IDE能够解析单个文件模块和目录模块。 FrameBuffer帧缓存查看器 --------------------- OpenMV IDE的特别之处在于集成的帧缓冲区查看器。这让你在处理你的代码的时候可以很容易地看到你的OpenMV Cam正在看什么。 在 `sensor.snapshot()` 调用时,帧缓冲区查看器会显示以前OpenMV Cam的帧缓冲区中的内容。 无论如何,我们稍后再谈。现在,下面是你需要了解的帧缓冲器查看器: * OpenMV IDE顶部右上角的 ``Reocord`` 按钮记录帧缓存器中的内容。使用它来快速制作您的OpenMV Cam所看到的视频。 请注意,录制工作以30 FPS记录OpenMV IDE帧缓冲区中的任何内容。但是,取决于应用程序, 帧缓冲区可能会更快或更慢地更新。无论如何,录制完成后,OpenMV IDE将使用FFMPEG将录制代码转换为任何想要共享的文件格式。 * OpenMV IDE顶部右上角的 ``Zoom`` 按钮控制帧缓存器的缩放。根据您的需要启用或禁用该功能。 * OpenMV IDE顶部右上角的 ``Disable`` 按钮控制你的OpenMV是否会发送图像到OpenMV IDE。 基本上,您的OpenMV必须不断JPEG压缩图像流到OpenMV IDE。这会降低性能。所以, 如果你想看看你的脚本在OpenMV Cam没有连接到你的电脑的情况下运行得有多快, 只需点击 ``Disable`` 按钮即可。当帧缓冲区被禁用时,您将无法看到您的OpenMV Cam正在查看的内容, 但您仍然可以在串行终端中看到来自OpenMV Cam的调试输出。 最后,您可以右键单击在帧缓冲区查看器中看到的任何图像,以将该图像保存到磁盘。此外, 如果通过单击并拖动来选择帧缓冲区中的区域,则可以将该区域保存到磁盘。请注意,在尝试将帧缓冲区保存到磁盘之前, 应该停止脚本。否则,你可能得不到你想要的确切图像。 要取消选择帧缓冲区中的某个区域,只需单击任意位置,而无需拖动即可删除选择。 但是,取消选择时可能创建一个像素选择区域,所以尝试单击帧缓冲区中的空白区域。 直方图显示 ----------------- OpenMV IDE中的集成直方图显示主要是为了填充帧缓冲区查看器下的空白空间,并为您提供一些视觉效果。 然而,对于得到关于房间中照明质量的反馈,确定颜色跟踪设置,以及通常只是给你关于OpenMV Cam所查看 的图像质量的想法,这也是非常有用的。 您可以在直方图中选择四个不同的颜色空间。RGB,灰度,LAB和YUV。只有灰度和LAB在以编程方式控制您的OpenMV时是有用的。 RGB很直观。因为我们使用JPEG进行JPEG压缩,所以我们可能会加上YUV。 无论如何,默认情况下直方图显示整个图像的信息。但是,如果通过单击并拖动帧缓冲区来选择一个区域, 那么直方图将只显示该区域中的颜色分布。 这种特性使得直方图显示在你需要在 `image.find_blobs()` 和 `image.binary()` 脚本中使用正确的灰度和LAB颜色通道设置时是很有用的。 最后,图像分辨率和你在图像上选择的边界框ROI(x,y,w,h)将显示在直方图的上方。 串行终端 --------------- 要显示串行终端,请点击位于OpenMV IDE底部的串行终端按钮。串行终端内置在主窗口中,更易于使用。它只是与您的文本编辑窗口分开。 无论如何,由您创建的OpenMV Cam中的所有调试文本 ``print`` 都将显示在串行终端中。除此之外,没有什么可说的了。 请注意,串行终端或多或少会无限缓冲文本。它将在RAM中保留最后一百万行的文本。所以,你可以使用它来缓冲大量的调试输出。 此外,如果您在Windows / Linux按ctrl+f或Mac上等效的快捷键,则可以搜索调试输出。 最后,串行终端是足够智能的,如果你想查看以前的调试输出它非常好用,不会自动滚动。如果滚动到文本输出的底部,自动滚动将再次打开。 状态栏 ---------- 在状态栏上,OpenMV IDE将显示您的OpenMV Cam的固件版本,串行端口,驱动器和FPS。固件版本标签实际上是一个按钮, 如果您的OpenMV的固件已过时,您可以单击以更新您的OpenMV。串行端口标签只显示您的OpenMV的串行端口,没有别的。 Drive标签是另一个按钮,您可以点击更改链接到OpenMV Cam的驱动器。最后,FPS标签显示 OpenMV IDE正在从您的OpenMV Cam中获取的fps。 .. note:: OpenMV IDE显示的FPS可能与OpenMV Cam的FPS不匹配。OpenMV IDE上的FPS标签是从您的OpenMV获得的FPS。 但是,您的OpenMV Cam实际上可能比OpenMV IDE运行得更快,OpenMV IDE只是从OpenMV Cam中抽取一些帧, 而不是全部。无论如何,OpenMV IDE的FPS永远不会比OpenMV Cam的FPS更快,但速度可能会更慢。 工具 ----- 您可以在OpenMV IDE的“工具”菜单下找到适用于OpenMV Cam的有用工具。特别是, ``Save open script to your OpenMV`` 和 ``CamReset OpenMV Cam`` 工具使用OpenMV开发应用程序时很有用。 * 使用OpenMV IDE的 ``Configure OpenMV Cam Settings file`` 将允许你修改存储在您的OpenMV中的 ``.ini`` 文件,您OpenMV将在启动时针对特定硬件配置读取。 * ``Save open script to your OpenMV Cam`` 该命令将当前正在查看的任何脚本保存到您的OpenMV。此外,它还可以自动清除脚本中的空白和注释, 从而占用更少的空间。一旦您认为您的程序已准备好在没有OpenMV IDE的情况下进行部署,请使用此命令。 请注意,该命令会将您的脚本保存在您的OpenMV Cam的USB闪存驱动器上。 ``main.py`` 是您的OpenMV Cam将在完成启动后运行的脚本。 * ``Reset OpenMV Cam`` 该命令重置,然后断开您的OpenMV。如果您运行在OpenMV上创建文件的脚本, 您将需要使用此选项,因为在OpenMV的USB闪存驱动器安装之后,Windows / Mac / Linux不会显示在您的OpenMV上以编程方式创建的任何文件。 接下来,在Tools菜单下,您可以调用boot-loader来重新编程您的OpenMV Cam。启动加载程序只能在您的OpenMV Cam的OpenMV IDE断开连接时调用。 你可以给它一个二进制 ``.bin`` 文件或 ``.dfu`` 文件来重新编程你的OpenMV凸轮。引导加载程序功能仅适用于计划更改默认OpenMV Cam固件的高级用户。 Open Terminal ------------- 打开终端功能允许您创建新的串行终端,使用OpenMV IDE远程调试未连接到计算机的OpenMV Cam。开放终端功能也可以用来编程任何MicroPython开发板。 您可以使用“打开终端”功能打开连接到串行端口,tcp端口或udp端口的终端。请注意,串行端口可以是用于无线连接的蓝牙端口。 机器视觉 -------------- 机器视觉子菜单包含许多用于OpenMV的机器视觉工具。例如,您可以使用颜色阈值编辑器来获取最佳的 颜色跟踪 ``image.find_blobs()`` 阈值。我们会定期提供新的机器视觉工具,让您的生活更轻松。 视频工具 ----------- 如果您需要压缩由OpenMV Cam生成的 ``.gif`` 文件或将 ``.mjpeg`` 或ImageWriter的 ``.bin`` 视频文件转换为 ``.mp4`` , 则可以使用转换视频文件操作来执行此操作。或者,如果您只想播放这些视频, 则也可以使用播放视频文件操作执行此操作。 请注意,在播放视频之前,请先将视频文件从OpenMV Cam的闪存驱动器复制到电脑上,因为OpenMV Cam上的磁盘I / O通过USB是缓慢的。 最后,FFMPEG用于提供转换和视频播放支持,可用于任何您喜欢的非OpenMV Cam活动。FFMPEG可以转换/播放大量的文件格式。 * 要将视频文件转换为一组图片,请选择视频文件作为源,并使目标为“%07d.bmp”/“%07d.jpg”/等文件名。 FFMPEG理解 ``printf()`` 就像带有图像文件格式扩展名的格式语句,意味着它应该将视频文件分解为目标格式的静止图像。 * 要将一系列静止图像转换为视频,请将源文件名设置为“%7d.bmp”/“%7d.jpg”/等。 其中目录中的所有图像都有一个类似的名称,如 ``1.bmp`` , ``2.bmp`` 等. FFMPEG理解 ``printf()`` 就像带有图像文件格式扩展名的格式语句一样,意味着应该将这些图像文件一起加入视频中。 * 要将 `ImageWriter` 文件转换为任何其他视频格式,请选择文件作为源和目标,使其成为您想要的任何文件格式。 * 要将任何格式的视频文件转换为 `ImageWriter` 文件,请选择要转换为源的视频文件,并将目标设置为 ``.bin`` 文件。 然后,FFMPEG将视频分解为JPG,OpenMV IDE将使用 `ImageWriter` 文件格式将这些JPG转换为RAW灰度或RGB565帧保存到 ``.bin`` 文件。 * 为了优化你的OpenMV Cam为web保存的 ``.gif`` 文件,将源文件设置为 ``.gif`` ,将目标文件设置为另一个 ``.gif`` 。 * 要将OpenMV Cam保存的MJPEG文件转换为另一种格式,请将MJPEG文件设置为源,将另一种格式(如 ``.mp4`` )设置为目标。 Option选项 ------- 在工具菜单下(或关于Mac菜单),您可以访问OpenMV IDE的选项对话框。 你可以配置编辑器的字体,大小,缩放,tab,自动清理空白,列边距,等等。