std::cout << "***************************" <<std::endl; yolov5trt->detect_api(color_img, conf_thre, is_seg); res_boxes = yolov5trt->res; boxes.clear(); for (int id = 0; id < res_boxes.size(); id++) { this->Draw_mask_bbox(res_boxes[id]); // int dist = yolov5trt->get_distance(resized_box, depth_img, 24); int dist = -1; b.cls = all_classes[class_names[res_boxes[id].class_id]]; b.box = resized_box; b.conf = res_boxes[id].conf; // b.dist = (dist / 1000); b.dist = dist; boxes.push_back(b); std::cout << "class_name: " << class_names[res_boxes[id].class_id] << " conf: " << res_boxes[id].conf << " dist: " << dist << std::endl;
时间: 2024-04-18 20:33:41 浏览: 14
这段代码涉及到输出检测结果和一些相关信息的过程。
首先,使用 `std::cout` 输出一行分隔符,用于区分不同的输出结果。
接下来,调用 `yolov5trt->detect_api` 方法对 `color_img` 进行目标检测,设置置信度阈值为 `conf_thre`,并指定是否进行分割操作。
然后,将检测到的结果赋值给 `res_boxes`。
接下来,清空 `boxes` 容器,为后续的结果存储做准备。
然后,使用 `for` 循环遍历 `res_boxes` 中的每个检测结果。
在循环中,调用 `this->Draw_mask_bbox(res_boxes[id])` 方法绘制目标的掩膜边界框。
接下来,使用 `yolov5trt->get_distance` 方法计算目标框到深度图像的距离,并将结果赋值给 `dist`。
然后,将目标的类别、边界框、置信度和距离信息保存到结构体 `b` 中。
将 `b` 添加到 `boxes` 容器中。
最后,使用 `std::cout` 输出目标类别、置信度和距离等信息。
这段代码的目的是输出检测到的目标类别、置信度和距离等信息,并将检测结果保存到容器中。
相关问题
std::string轉char*
要将`std::string`转换为`char*`,你可以使用`c_str()`函数。这个函数返回一个指向`std::string`内部字符数组的指针。
以下是一个示例代码:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
const char* charPtr = str.c_str();
std::cout << "转换后的char*:" << charPtr << std::endl;
return 0;
}
```
在上述代码中,我们使用`c_str()`函数将`std::string`对象转换为`const char*`类型的指针。然后,我们将这个指针打印出来。
需要注意的是,`c_str()`函数返回的指针指向的是`std::string`内部字符数组的首地址。因此,当`std::string`对象被销毁或者修改时,这个指针将变得无效。确保在使用指向`c_str()`返回的指针之前,`std::string`对象仍然有效。
std::string 转 char*
可以使用`c_str()`函数将`std::string`转换为`const char*`,然后再将其转换为`char*`,示例代码如下:
```cpp
#include <iostream>
#include <cstring>
int main() {
std::string str = "Hello World!";
char* charStr = new char[str.length() + 1];
std::strcpy(charStr, str.c_str());
std::cout << charStr << std::endl;
delete[] charStr;
return 0;
}
```
注意,使用完`char*`之后,需要手动释放内存。