从GRIP生成代码

GRIP代码生成

在像roboRIO或Raspberry PI这样的小型处理器上运行视觉算法时,建议直接在处理器上运行OpenCV,而无需GRIP开销。为此,GRIP可以使用C ++,Java和Python为您创建的管道生成代码。可以将生成的代码添加到您的机器人项目中,并直接从您现有的机器人代码中调用。

不会生成输入源(例如摄像机或图像目录)和输出步骤(例如NetworkTables)。您的代码必须提供图像作为OpenCV垫。在roboRIO上,CameraServer类提供该格式的图像。为了获得结果,您可以仅使用生成的吸气剂方法来检索结果值,例如轮廓x和y值。

生成代码

要生成代码,请转到``工具>生成代码’’。这将打开一个保存对话框,使您可以创建执行GRIP线程中的步骤的C ++,Java或Python类。

../../../../_images/generating-code.png

如果生成要在现有项目中使用的代码,请选择一个相关目录以将线程保存到该目录。

  • ** C ++用户**:线程类分为头文件和实现文件

  • ** Java用户**:生成的类缺少包声明,因此应添加一个声明以匹配保存文件的目录。

  • ** Python Users **:模块名称将与该类相同,因此import语句将类似于``from Pipeline import Pipeline``

生成代码的结构

Pipeline:
  // Process -- this will run the pipeline
  process(Mat source)

  // Output accessors
  getFooOutput()
  getBar0Output()
  getBar1Output()
  ...

运行线程

要运行线程,请使用源(网络摄像机,IP摄像机,图像文件等)作为参数来调用处理方法。这将使用getFooOutput方法公开线程中每个操作的输出。

得到结果

用户能够获得线程中每个步骤的输出。这些操作的输出可以通过它们各自的访问器访问。例如:

运作方式

Java / C ++ getter

Python变量

RGB阈值

getRgbThresholdOutput

``rgb_threshold_output’’

模糊

getBlurOutput

blur_output

CV侵蚀

getCvErodeOutput

``mcv_erode_output’’

查找轮廓

``getFindContoursOutput’’

``find_contours_output’’

过滤轮廓

``getFilterContoursOutput’’

``filter_contours_output’’

如果一个操作在线程中多次出现,则这些操作的访问器具有该操作的编号:

运作方式

哪个外观

存取器

模糊

第一

``getBlur0Output’’

模糊

第二

``getBlur1Output’’

模糊

第三

``getBlur2Output’’