| RMVL 1.5.2 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
通过 gcc 和 CMake 使用 RMVL

RMVL 部署示例（涉及 extra 模块）

上一篇教程：构建并安装 RMVL ↑
下一篇教程：为基于 ARM 的 Linux 系统配置交叉编译 ↓

注意

- 必须确保您已经成功安装了 RMVL。如果你不熟悉 CMake，请移步到 CMake 教程
- 本示例使用到了 rm::ArmorDetector 模块，需要提前安装 onnxruntime 的 C++ 开发包，可参考 1.4 onnxruntime 的内容，若未安装，请安装后再重新编译 RMVL。

## 详细步骤

### 1. 创建项目

创建新的文件夹：`rmvl_deploy_test`，将其链接至 RMVL

mkdir rmvl_deploy_test build
cd rmvl_deploy_test
touch main.cpp CMakeLists.txt

### 2. 编写测试文件

编写 main.cpp

将以下内容写至 `main.cpp` 中

#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <rmvl/detector.hpp>
int main(int argc, char *argv[])
{
cv::Mat src = cv::Mat::zeros(cv::Size(1280, 1024), CV_8UC3);
cv::line(src, cv::Point(450, 380), cv::Point(440, 470), cv::Scalar(0, 0, 255), 18);
cv::line(src, cv::Point(650, 400), cv::Point(640, 490), cv::Scalar(0, 0, 255), 18);
cv::line(src, cv::Point(850, 370), cv::Point(870, 460), cv::Scalar(0, 0, 255), 18);
rm::detector::ptr detector = rm::ArmorDetector::make_detector();
std::vector<rm::group::ptr> groups;
auto info = detector->detect(groups, src, rm::RED, rm::ImuData{}, cv::getTickCount());
INFO_("size of armors = %ld", info.combos.size());
for (auto p_combo : info.combos)
{
const auto &corners = p_combo->corners();
cv::line(src, corners[0], corners[2], cv::Scalar(0, 255, 0), 2);
cv::line(src, corners[1], corners[3], cv::Scalar(0, 255, 0), 2);
}
cv::namedWindow("rmvl_deploy_test: src", cv::WINDOW_NORMAL);
cv::resizeWindow("rmvl_deploy_test: src", cv::Size(640, 512));
cv::imshow("rmvl_deploy_test: src", src);
HIGHLIGHT_("RMVL build Successfully!\n\n\t\t-------- "
"press any key to exit this program. --------\n");
cv::waitKey(0);
return 0;
}
rm::ArmorDetector::make_detector
static std::unique_ptr< ArmorDetector > make_detector()
构建 ArmorDetector
定义 armor_detector.h:58
rm::detector::ptr
std::unique_ptr< detector > ptr
定义 detector.h:51
rm::RED
@ RED
红色通道
定义 pretreat.hpp:35
HIGHLIGHT_
#define HIGHLIGHT_(...)
定义 util.hpp:29
INFO_
#define INFO_(...)
定义 util.hpp:57
detector.hpp
rm::ImuData
IMU 数据
定义 dataio.hpp:31

编写 CMakeLists.txt

将以下内容写至 `CMakeLists.txt` 中

cmake_minimum_required(VERSION 3.16)
project(rmvl_deploy)
find_package(RMVL REQUIRED)
add_executable(demo main.cpp)
target_link_libraries(
demo
PRIVATE ${RMVL_LIBS}
)

### 3. 构建项目

在 `rmvl_deploy_test` 的顶层文件夹中打开终端，输入以下命令

cd build
cmake ..
make

### 4. 运行

继续输入以下命令

./demo