从GRIP生成代码
GRIP代码生成
在像roboRIO或Raspberry PI这样的小型处理器上运行视觉算法时,建议直接在处理器上运行OpenCV,而无需GRIP开销。为此,GRIP可以使用C ++,Java和Python为您创建的管道生成代码。可以将生成的代码添加到您的机器人项目中,并直接从您现有的机器人代码中调用。
不会生成输入源(例如摄像机或图像目录)和输出步骤(例如NetworkTables)。您的代码必须提供图像作为OpenCV垫。在roboRIO上,CameraServer类提供该格式的图像。为了获得结果,您可以仅使用生成的吸气剂方法来检索结果值,例如轮廓x和y值。
生成代码
要生成代码,请转到``工具>生成代码’’。这将打开一个保存对话框,使您可以创建执行GRIP线程中的步骤的C ++,Java或Python类。
如果生成要在现有项目中使用的代码,请选择一个相关目录以将线程保存到该目录。
** 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阈值 |
|
``rgb_threshold_output’’ |
模糊 |
|
|
CV侵蚀 |
|
``mcv_erode_output’’ |
查找轮廓 |
``getFindContoursOutput’’ |
``find_contours_output’’ |
过滤轮廓 |
``getFilterContoursOutput’’ |
``filter_contours_output’’ |
如果一个操作在线程中多次出现,则这些操作的访问器具有该操作的编号:
运作方式 |
哪个外观 |
存取器 |
---|---|---|
模糊 |
第一 |
``getBlur0Output’’ |
模糊 |
第二 |
``getBlur1Output’’ |
模糊 |
第三 |
``getBlur2Output’’ |