这段代码怎么拔X Y坐标放数组里for (size_t j = 0; j < res.size(); j++) { cv::Rect r = get_rect(img, res[j].bbox); cv::rectangle(img, r, cv::Scalar(0x27, 0xC1, 0x36), 2); cv::putText(img, std::to_string(r.x) + "," + std::to_string(r.y), cv::Point(r.x, r.y - 15), cv::FONT_HERSHEY_PLAIN, 1.2, cv::Scalar(0xFF, 0xFF, 0xFF), 2); }
时间: 2024-03-05 22:47:32 浏览: 72
可以定义两个数组,一个用于存放X坐标,另一个用于存放Y坐标。在循环中,每次取得矩形框的坐标,将X坐标和Y坐标分别存入对应的数组中。
代码示例:
```
std::vector<int> xCoords;
std::vector<int> yCoords;
for (size_t j = 0; j < res.size(); j++) {
cv::Rect r = get_rect(img, res[j].bbox);
cv::rectangle(img, r, cv::Scalar(0x27, 0xC1, 0x36), 2);
cv::putText(img, std::to_string(r.x) + "," + std::to_string(r.y), cv::Point(r.x, r.y - 15), cv::FONT_HERSHEY_PLAIN, 1.2, cv::Scalar(0xFF, 0xFF, 0xFF), 2);
xCoords.push_back(r.x);
yCoords.push_back(r.y);
}
```
在上述代码中,xCoords和yCoords分别为存放X坐标和Y坐标的数组。每次循环将矩形框的坐标存入对应的数组中。
相关问题
这段代码怎么把类名和X Y坐标放数组里for (size_t j = 0; j < res.size(); j++) { cv::Rect r = get_rect(img, res[j].bbox); cv::rectangle(img, r, cv::Scalar(0x27, 0xC1, 0x36), 2); cv::putText(img, std::to_string(r.x) + "," + std::to_string(r.y), cv::Point(r.x, r.y - 15), cv::FONT_HERSHEY_PLAIN, 1.2, cv::Scalar(0xFF, 0xFF, 0xFF), 2); }
可以定义一个结构体,包含类名、X坐标和Y坐标三个成员变量,将每个检测到的对象的类名和坐标存入一个该结构体的实例中,再将该实例存入一个数组中。
代码示例:
```
struct ObjectInfo {
std::string className;
int xCoord;
int yCoord;
};
std::vector<ObjectInfo> objects;
for (size_t j = 0; j < res.size(); j++) {
cv::Rect r = get_rect(img, res[j].bbox);
cv::rectangle(img, r, cv::Scalar(0x27, 0xC1, 0x36), 2);
cv::putText(img, std::to_string(r.x) + "," + std::to_string(r.y), cv::Point(r.x, r.y - 15), cv::FONT_HERSHEY_PLAIN, 1.2, cv::Scalar(0xFF, 0xFF, 0xFF), 2);
ObjectInfo obj;
obj.className = res[j].class_name;
obj.xCoord = r.x;
obj.yCoord = r.y;
objects.push_back(obj);
}
```
在上述代码中,ObjectInfo为定义的结构体,包含三个成员变量:className、xCoord和yCoord。每次循环将检测到的对象的类名和坐标存入一个ObjectInfo实例中,再将该实例存入objects数组中。最终,objects数组中存放了所有检测到的对象的类名和坐标信息。
解释=for (size_t j = 0; j < res.size(); j++) { cv::Rect r = get_rect(img, res[j].bbox); res_array[j][0] = r.x; res_array[j][1] = r.y; res_array[j][2] = r.width; res_array[j][3] = r.height; res_array[j][4] = res[j].class_id; res_array[j][5] = res[j].conf; }
这段代码的作用是将目标检测算法检测出来的所有目标的矩形框、类别和置信度信息保存到一个二维数组中。其中,res是目标检测算法返回的所有目标信息,包括目标的bbox(bounding box)信息、类别和置信度等信息。for循环遍历所有目标,对于每个目标,通过调用get_rect函数获取其矩形框的信息,并将其保存到一个cv::Rect类型的变量r中。然后,将r中矩形框的左上角坐标、宽度和高度等信息分别保存到一个二维数组res_array的相应位置上,同时将目标的类别和置信度信息也保存到res_array中。最终,res_array中的每一行对应一个目标的信息,包括其矩形框的位置和大小、类别和置信度等信息。
阅读全文