3. OpenMV IDE 概述¶
现在我们来谈谈OpenMV IDE。OpenMV IDE是您用来编程OpenMV Cam的工具。它具有一个由QtCreator支持的功能强大的文本编辑器, 一个帧缓冲器查看器,直方图显示器,以及一个用于OpenMV调试输出的集成串行终端。
无论如何,IDE是或多或少可以直接使用。我们在IDE中放入了许多东西,在IDE中您应该了解几件事情。
3.1. 文件菜单和示例代码¶
在OpenMV IDE的文件菜单下,您可以使用所有的标准文本编辑器选项。新建,打开,保存,另存为,打印等。无论如何, 当你创建一个新的文件或打开一个文件,它会出现在文本编辑器窗格中。请注意,您可以打开多个文件, 您可以通过单击显示当前文件名称的组合框进行选择。OpenMV IDE使用QtCreator作为文本编辑器的后端, 实际上支持在多个窗口中打开多个文件,具有水平和垂直分割功能。然而,所有这一切都是隐藏的, 以便明确哪些脚本将在单击运行按钮时运行,就像Arduino IDE一样。如果您想在不同的编辑器中编辑脚本, 或者需要一次打开多个文件,只需在您选择的编辑器中打开文件并对其进行处理即可。
注解
一次只能在您的计算机上使用OpenMV IDE的一个实例。 这样做是为了如果您尝试通过文件资源管理器打开文件,OpenMV IDE的一个实例将打开该文件。这也使您可以使用拖放功能打开文件。
继续,在文件菜单下,您会看到示例菜单,其中有大量的脚本展示了如何使用OpenMV Cam的不同功能。 随着我们实现更多的功能,将会出现更多的例子。确保熟悉示例脚本,以便您可以有效地使用OpenMV。
对于个人脚本存储,OpenMV IDE会在您的文档文件夹中查找“OpenMV”目录。 OpenMV IDE将在 文件 ->文件夹 中显示“OpenMV”文件夹的内容。
最后,无论何时在OpenMV IDE中创建一个新文件或打开示例脚本, OpenMV IDE都会创建一个不需要存储在磁盘上的文件副本,就像在Arduino IDE中一样。这让您快速测试出创意,而无需创建文件。
3.2. 文本编辑¶
OpenMV IDE有一个由QtCreator后端支持的专业文本编辑器。 您可以对所有打开的文件进行无限撤消和重做,空格可视化(对于MicroPython非常重要),字体大小的控制以及QtCreator查找和替换等。 查找和替换功能正则表达式与查找过程中捕获文本的能力相匹配,并使用捕获的文本进行替换。此外, 它也可以在更换时保存大小写。最后,查找和替换功能不仅在当前文件上起作用,而且还可以在文件夹中 的所有文件或OpenMV IDE中的所有打开的文件上起作用。
除了漂亮的文本编辑环境之外,OpenMV IDE还提供关于关键字的自动完成支持悬停工具提示。因此,
例如在OpenMV IDE中用python输入 .
后,将会检测到您即将编写函数或方法名称,并会显示一个自动完成文本框。
一旦你写了函数/方法的名字,它也将引导你写入参数。最后,如果将鼠标光标悬停在任何关键字上,
OpenMV IDE将在工具提示中显示该关键字的文档。这两个特性使编辑脚本变得愉快!
3.3. 连接到您的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将记住您的选择,因此下次连接时会自动突出显示您以前的选择。
注解
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。
注解
如果您的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的串行线程不可用。无论如何,我们做了大量工作来确保它不会发生,但要注意它仍有发生的可能。
3.4. 运行脚本¶
完成编辑代码并准备运行脚本后,只需单击OpenMV IDE左下角的绿色运行按钮即可。 该脚本将被发送到您的OpenMV编译成Python字节码,并由您的OpenMV凸轮执行。
如果您的脚本中有任何错误,您的OpenMV Cam将发回编译错误显示在terminal中,OpenMV IDE将自动解析查找错误。 当OpenMV IDE检测到错误时,它会自动打开错误的文件,并突出显示错误的行,同时显示一个错误消息框。这个功能可以节省大量的时间修复错误。
无论如何,如果你想停止脚本,只需点击停止按钮(在脚本运行时替换运行按钮)。请注意,由于程序运行结束或编译错误,脚本可以自动停止。 无论哪种情况,运行按钮都会再次出现。
注解
单击运行按钮时,OpenMV IDE会自动扫描脚本中的导入,并复制OpenMV Cam中缺少的任何外部所需脚本。 当您单击“运行”按钮时,OpenMV IDE还将自动更新OpenMV Cam上任何过时的外部模块。 OpenMV IDE首先在您的个人“OpenMV”文档文件夹中查找外部模块,然后查找示例文件夹。 OpenMV IDE能够解析单个文件模块和目录模块。
3.5. 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的调试输出。
最后,您可以右键单击在帧缓冲区查看器中看到的任何图像,以将该图像保存到磁盘。此外, 如果通过单击并拖动来选择帧缓冲区中的区域,则可以将该区域保存到磁盘。请注意,在尝试将帧缓冲区保存到磁盘之前, 应该停止脚本。否则,你可能得不到你想要的确切图像。
要取消选择帧缓冲区中的某个区域,只需单击任意位置,而无需拖动即可删除选择。 但是,取消选择时可能创建一个像素选择区域,所以尝试单击帧缓冲区中的空白区域。
3.6. 直方图显示¶
OpenMV IDE中的集成直方图显示主要是为了填充帧缓冲区查看器下的空白空间,并为您提供一些视觉效果。 然而,对于得到关于房间中照明质量的反馈,确定颜色跟踪设置,以及通常只是给你关于OpenMV Cam所查看 的图像质量的想法,这也是非常有用的。
您可以在直方图中选择四个不同的颜色空间。RGB,灰度,LAB和YUV。只有灰度和LAB在以编程方式控制您的OpenMV时是有用的。 RGB很直观。因为我们使用JPEG进行JPEG压缩,所以我们可能会加上YUV。
无论如何,默认情况下直方图显示整个图像的信息。但是,如果通过单击并拖动帧缓冲区来选择一个区域,
那么直方图将只显示该区域中的颜色分布。 这种特性使得直方图显示在你需要在 image.find_blobs()
和 image.binary()
脚本中使用正确的灰度和LAB颜色通道设置时是很有用的。
最后,图像分辨率和你在图像上选择的边界框ROI(x,y,w,h)将显示在直方图的上方。
3.7. 串行终端¶
要显示串行终端,请点击位于OpenMV IDE底部的串行终端按钮。串行终端内置在主窗口中,更易于使用。它只是与您的文本编辑窗口分开。
无论如何,由您创建的OpenMV Cam中的所有调试文本 print
都将显示在串行终端中。除此之外,没有什么可说的了。
请注意,串行终端或多或少会无限缓冲文本。它将在RAM中保留最后一百万行的文本。所以,你可以使用它来缓冲大量的调试输出。 此外,如果您在Windows / Linux按ctrl+f或Mac上等效的快捷键,则可以搜索调试输出。 最后,串行终端是足够智能的,如果你想查看以前的调试输出它非常好用,不会自动滚动。如果滚动到文本输出的底部,自动滚动将再次打开。
3.8. 状态栏¶
在状态栏上,OpenMV IDE将显示您的OpenMV Cam的固件版本,串行端口,驱动器和FPS。固件版本标签实际上是一个按钮, 如果您的OpenMV的固件已过时,您可以单击以更新您的OpenMV。串行端口标签只显示您的OpenMV的串行端口,没有别的。 Drive标签是另一个按钮,您可以点击更改链接到OpenMV Cam的驱动器。最后,FPS标签显示 OpenMV IDE正在从您的OpenMV Cam中获取的fps。
注解
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更快,但速度可能会更慢。
3.9. 工具¶
您可以在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固件的高级用户。
3.10. Open Terminal¶
打开终端功能允许您创建新的串行终端,使用OpenMV IDE远程调试未连接到计算机的OpenMV Cam。开放终端功能也可以用来编程任何MicroPython开发板。
您可以使用“打开终端”功能打开连接到串行端口,tcp端口或udp端口的终端。请注意,串行端口可以是用于无线连接的蓝牙端口。
3.11. 机器视觉¶
机器视觉子菜单包含许多用于OpenMV的机器视觉工具。例如,您可以使用颜色阈值编辑器来获取最佳的
颜色跟踪 image.find_blobs()
阈值。我们会定期提供新的机器视觉工具,让您的生活更轻松。
3.12. 视频工具¶
如果您需要压缩由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
)设置为目标。