目前,任何涉及计算机视觉的工作都要求运行操作系统的计算机可以运行多层软件,并且需要进行大量设置才能使计算机视觉代码正常工作。
如果您需要做很多其他事情而不仅仅是处理图像,例如连接到互联网,同时运行许多不同的应用程序等等,这一切都是需要的。但是,如果有红色的物体出现在白墙前我只是想让LED灯开启,为什么需要建立一个复杂的系统呢?或者,如果我只想在看到脸部时打开LED,该怎么办?
例如,如果我想在传感器断开时将LED打开一小段时间,我会使用Arduino来实现这一目标。我会写大约10行代码并完成它,写入Arduino后,代码将永远幸运地运行。如果我想像相机一样使用2D传感器,一切都会改变。
由于相机传感器产生大量数据,因此处理传感器数据需要更快,更有资源的计算机。现在,借助这款速度更快,功能更强大的计算机,你可以肯定地做更多的事情。
但是,如果我的目标仍然只是打开一个LED怎么办?旋转马达?还是打开阀门?我还能用相机传感器获得Arduino的体验吗?是!这是OpenMV Cam背后的重点。有点可编程的电脑做简单的电脑视觉事物!我们使用OpenMV Cam的目标是建立一个灵活的系统来解决非常直接的计算机视觉问题。为了实现这一目标,我们在微控制器上运行的MicroPython上构建了OpenMV Cam。
https://openmv.io/pages/download/
下载.run
文件
chmod +x openmv-ide-linux-*.run
./openmv-ide-linux-*.run
然后按照安装程序提示在linux上安装OpenMV IDE。 然后,请参阅安装程序输出目录中的README.txt文件和setup.sh文件,以便安装设备固件更新(DFU)支持,以便在遇到启动加载程序问题时可以恢复OpenMV Cam。 最后,要启动OpenMV IDE,只需单击bin / openmvide文件即可。 如果OpenMV IDE无法启动,则可能需要先添加执行权限。
chmod +x openmvide
./openmvide
如果这不起作用,请改用openmvide.sh脚本。
chmod +x openmvide.sh
./openmvide.sh
通常,如果已在Linux上安装Qt,则需要使用openmvide.sh脚本运行OpenMV IDE。 openmvide.sh脚本在启动OpenMV IDE之前修复了链接器路径问题,以确保它在任何系统上运行。
现在让我们谈谈OpenMV IDE。 OpenMV IDE是您用来编程OpenMV Cam的工具。 它具有强大的文本编辑器,由QtCreator驱动,帧缓冲查看器,直方图显示和集成的串行终端,用于OpenMV Cam的调试输出。 无论如何,IDE或多或少都是直接使用的。 为了简化IDE中的内容,我付出了很多努力。 但是,您应该在IDE中了解一些事项。
在OpenMV IDE的文件菜单下,您可以使用所有标准文本编辑器选项。新建,打开,保存,另存为,打印等。无论如何,当您创建新文件或打开新文件时,它将显示在文本编辑器窗格中。请注意,您可以打开多个文件,您可以通过单击显示当前文件名称的组合框来选择这两个文件。 OpenMV IDE使用QtCreator作为文本编辑器后端,实际上支持在具有水平和垂直分割功能的多个窗口中打开多个文件。但是,所有这些都是隐藏的,以便在您单击Arduino IDE中的运行按钮时显而易见运行哪个脚本。如果要在不同的编辑器中编辑脚本,或者需要一次打开多个文件,只需在您选择的编辑器中打开文件并进行处理。 OpenMV IDE将自动检测已更改的文件,并在再次单击OpenMV IDE窗口时询问是否要加载更改。
继续,在文件菜单下,您将找到示例菜单,其中包含大量脚本,展示了如何使用OpenMV Cam的不同功能。 随着我们实现更多功能,将会出现更多示例。 确保熟悉示例脚本,以便有效地使用OpenMV Cam。 对于个人脚本存储,OpenMV IDE在文档文件夹中查找“OpenMV”目录。 OpenMV IDE将在File - > Documents Folder中显示“OpenMV”文件夹的内容。 最后,无论何时在OpenMV IDE中创建新文件或打开示例脚本,OpenMV IDE都会创建仅存储在磁盘上的文件的副本,就像在Arduino IDE中一样。 这样您就可以快速测试想法,而无需创建文件。
OpenMV IDE具有由QtCreator后端驱动的专业文本编辑器。您可以在所有打开的文件,白空间可视化(对于MicroPython很重要),字体大小控件以及最佳QtCreator的查找和替换中进行无限撤消和重做。查找和替换功能使正则表达式与在查找期间捕获文本的能力匹配,并使用捕获的文本进行替换。此外,它还可以在更换时保留外壳。最后,查找和替换功能不仅适用于当前文件,而且可以处理文件夹中的所有文件或OpenMV IDE中的所有打开文件。除了优秀的文本编辑环境,OpenMV IDE还提供关键字的自动完成支持悬停工具提示。所以,打字后。例如,在Python中,OpenMV IDE将检测到您即将编写函数或方法名称,它将显示一个自动完成文本框。一旦你编写了函数/方法名称,它也会引导你完成参数。最后,如果将鼠标光标悬停在任何关键字上,OpenMV IDE将在工具提示中显示该关键字的文档。这两个功能使编辑脚本成为一种乐趣!
一旦您解决了涉及编程固件等的所有启动问题,您只需单击OpenMV IDE左下角的连接按钮即可连接到OpenMV Cam。 OpenMV IDE非常智能地连接并自动过滤我们不是OpenMV Cam的所有串行端口。如果只有一个OpenMV Cam连接到您的计算机,它将找到它并立即连接。如果您有两个OpenMV凸轮,它会询问您要连接到哪个串口。请注意,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的连接。
完成编辑代码并准备运行脚本后,只需单击OpenMV IDE左下角的绿色运行按钮即可。 然后,该脚本将被发送到您的OpenMV Cam,以编译为Python字节码并由您的OpenMV Cam执行。 如果脚本中有任何错误,OpenMV Cam将在串行终端中发回编译错误,OpenMV IDE会自动解析查找错误。 当OpenMV IDE检测到并出现错误时,它将自动错误地打开文件并突出显示错误的行以及显示一个很好的错误消息框。 此功能可以节省大量修复错误的时间。 无论如何,如果你想停止脚本,只需点击停止按钮,它将在脚本运行时替换运行按钮。 请注意,由于完成或编译错误,脚本可以自动停止。 在任何一种情况下,运行按钮将再次出现。
使OpenMV IDE与众不同的是集成帧缓冲查看器。这让您可以轻松地看到OpenMV Cam在处理代码时所看到的内容。帧缓冲区查看器在调用sensor.snapshot()
时显示先前OpenMV Cam的帧缓冲区中的内容。无论如何,我们稍后会谈到更多。
现在,您需要了解有关帧缓冲区查看器的信息:
Reocord
按钮可记录帧缓冲区中的任何内容。使用它可以快速制作OpenMV Cam所看到的视频。请注意,录制通过以30 FPS记录OpenMV IDE的帧缓冲区中的任何内容来工作。然而,取决于应用,帧缓冲器可以比这更快或更慢地更新。无论如何,在录制完成后,OpenMV IDE将使用FFMPEG将录制内容转码为您想要共享的任何文件格式。Zoom
按钮控制帧缓冲区查看器的缩放到适合功能。根据需要启用或禁用该功能。Disable
按钮控制OpenMV Cam是否将图像发送到OpenMV IDE。基本上,您的OpenMV Cam必须经常JPEG压缩图像以将它们流式传输到OpenMV IDE。这会降低性能。因此,如果您希望在没有将OpenMV Cam连接到计算机的情况下看到脚本在野外运行的速度,请单击Disable
按钮。当帧缓冲区被禁用时,您将无法看到OpenMV Cam正在查看的内容,但您仍然可以在串行终端中看到OpenMV Cam的调试输出。最后,您可以右键单击帧缓冲区查看器中显示的任何图像,将该图像保存到磁盘。此外,如果通过单击并拖动选择帧缓冲区中的区域,则可以将该区域仅保存到磁盘。请注意,在尝试将帧缓冲区保存到磁盘之前,应该停止脚本。否则,您可能无法获得所需的确切帧。要取消选择帧缓冲区中的区域,只需单击任意位置而不拖动以删除选择。但是,取消选择时可以创建一个像素选择,因此请尝试单击帧缓冲区中的空白区域。
OpenMV IDE中的集成直方图显示主要用于填充帧缓冲区查看器下方的空白区域,为您提供一些视觉效果。但是,它实际上对于获取有关房间照明质量的反馈,确定颜色跟踪设置以及通常只是让您了解OpenMV Cam正在查看的图像质量非常有用。
您可以在直方图中选择四种不同的颜色空间。 RGB,Grayscale,LAB和YUV。只有Grayscale和LAB可用于以编程方式控制OpenMV Cam。 RGB非常适合用作眼睛糖果和YUV,因为我们将它用于JPEG压缩,并认为我们不妨添加它。
无论如何,默认情况下,直方图显示有关整个图像的信息。但是,如果通过单击并拖动来选择帧缓冲区的某个区域,则直方图将仅显示该区域中的颜色分布。此功能使直方图显示对于确定在image.find_blobs()
和image.binary()
的脚本中需要使用的正确灰度和LAB颜色通道设置非常有用。最后,您在图像上选择的边界框的图像分辨率和ROI(x,y,w,h)将显示在直方图上方。
要显示串行终端,请单击位于OpenMV IDE底部的串行终端按钮。 串行终端内置在主窗口中,更易于使用。 它只是与您的文本编辑窗口分开。
无论如何,print
创建的OpenMV Cam中的所有调试文本都将显示在串行终端中。 除此之外,没有什么可说的。 请注意,串行终端或多或少会无限缓冲文本。 它将在RAM中保留最后一百万行文本。 因此,您可以使用它来缓冲大量的调试输出。
此外,如果您在Windows / Linux中按ctrl + f
或Mac上的等效快捷方式,您将能够搜索调试输出。 最后,如果你想查看以前的调试输出,串口终端足够智能,不会自动滚动你,这使得它非常好用。 如果滚动到文本输出的底部,则自动滚动将再次打开。
在状态栏上,OpenMV IDE将显示您的OpenMV Cam的固件版本,串行端口,驱动器和FPS。 固件版本标签实际上是一个按钮,如果OpenMV Cam的固件已过期,您可以单击该按钮来更新OpenMV Cam。 串行端口标签只显示您的OpenMV Cam的串行端口,而不是其他任何内容。 Drive标签是另一个按钮,您可以单击该按钮更改链接到OpenMV Cam的驱动器。 最后,FPS标签显示FPS OpenMV IDE来自您的OpenMV Cam。
您可以在OpenMV IDE的Tools菜单下找到适用于OpenMV Cam的有用工具。特别是,在开发应用程序时,Save open script to your OpenMV Cam
和Reset OpenMV Cam
非常有用。
Configure OpenMV Cam Settings file
允许您使用OpenMV IDE修改存储在OpenMV Cam上的.ini
文件,OpenMV Cam将在启动时读取特定硬件配置。
Save open script to your OpenMV Cam
命令会将您当前正在查看的任何脚本保存到OpenMV
Cam。此外,它还可以自动从脚本中删除空白和注释,从而占用更少的空间。一旦您认为您的程序已准备好部署而没有OpenMV IDE,请使用此命令。请注意,此命令会将您的脚本保存为OpenMV Cam的USB闪存驱动器上的main.py
. main.py
是OpenMV Cam完成启动后将运行的脚本。
Reset OpenMV Cam
命令重置然后断开与OpenMV Cam的连接。如果您运行在OpenMV
Cam上创建文件的脚本,您将需要使用此选项,因为Windows / Mac / Linux将不会显示OpenMV
Cam的USB闪存驱动器之后在Python脚本中以编程方式创建的OpenMV Cam上的任何文件安装。
接下来,在Tools菜单下,您可以调用boot-loader来重新编程OpenMV Cam。只有在为OpenMV Cam断开OpenMV IDE时,才能调用引导加载程序。你可以给它一个二进制.bin文件来重新编程你的OpenMV Cam或.dfu文件。引导加载程序功能仅适用于计划更改默认OpenMV Cam固件的高级用户。
##3.10 开放式终端
开放式终端功能允许您使用OpenMV IDE创建新的串行终端,以便在未连接到计算机时远程调试OpenMV Cam。 开放式终端功能也可用于编程任何MicroPython开发板。 您可以使用“打开终端”功能打开连接到串行端口,tcp端口或udp端口的终端。 请注意,串行端口可以是用于无线连接的蓝牙端口。
机器视觉子菜单包含许多适用于OpenMV Cam的机器视觉工具。 例如,您可以使用颜色阈值编辑器为image.find_blobs()
获取最佳颜色跟踪阈值。
如果您需要压缩OpenMV Cam生成的.gif
文件或将.mjpeg
或ImageWriter .bin
视频文件转换为.mp4
,您可以使用转换视频文件操作来执行此操作。
或者,如果您只想播放这些视频,也可以使用播放视频文件操作。
请注意,您应该先将OpenMV Cam的闪存驱动器中的视频文件复制到计算机上,然后才能播放它们,因为OpenMV Cam上的USB I / O通过USB速度很慢。
最后,FFMPEG用于提供转换和视频播放器支持,可用于您喜欢的任何非OpenMV Cam活动。FFMPEG可以转换/播放大量文件格式。
“%07d.bmp”
/“%07d.jpg”
/等文件名。FFMPEG理解printf()
类似格式语句的图像文件格式扩展,意味着它应该将视频文件分解为目标格式的静止图像。1.bmp
,2.bmp
等名称.FFMPEG理解printf()
类似格式语句的图像文件格式扩展,意味着它应该将这些图像文件一起加入视频中。ImageWriter
文件转换为任何其他视频格式,请选择文件作为源和目标,使其成为您想要的任何文件格式。ImageWriter
文件,请选择要转换为源的视频文件,并将目标设置为.bin文件。然后,FFMPEG将视频分解为JPG,OpenMV IDE将使用ImageWriter
文件格式将这些JPG转换为RAW灰度或RGB565帧保存到.bin
文件。