用C++把track_msg->x,track_msg->y 这两个点放在一个容器中进行遍历
时间: 2024-05-04 21:16:34 浏览: 16
你可以用一个结构体来定义一个点,然后再定义一个数组来存储这些点。下面是一个示例代码:
```c
struct Point {
int x;
int y;
};
int main() {
struct Point track_msg[] = {{1, 2}, {3, 4}, {5, 6}};
int num_points = sizeof(track_msg) / sizeof(struct Point);
for (int i = 0; i < num_points; i++) {
printf("(%d, %d)\n", track_msg[i].x, track_msg[i].y);
}
return 0;
}
```
在上面的代码中,我们定义了一个名为Point的结构体,它包含x和y两个整型成员。然后我们定义一个数组track_msg来存储多个点,数组中每个元素都是一个点。在示例中,我们存储了三个点{(1, 2), (3, 4), (5, 6)}。我们还定义了一个变量num_points来记录数组中点的数量。最后,我们使用for循环遍历数组中的所有点,并输出它们的坐标。
相关问题
track_handler_->set_current_image(cv_ptr->image, cur_image_time);
"->" 是一个 C++ 中的成员访问运算符,用于通过指向对象的指针访问对象的成员函数或成员变量。在这段代码中,track_handler_ 是一个指向 TrackHandler 类对象的指针,set_current_image 是 TrackHandler 类的一个成员函数。通过 "->" 运算符,可以访问 track_handler_ 指针所指向的 TrackHandler 对象的 set_current_image 成员函数,并传递 cv_ptr->image 和 cur_image_time 两个参数。这段代码通常用于机器人或无人机等设备中,将当前时刻的图像传递给视觉 SLAM 系统或其他图像处理算法,用于实时的视觉定位和地图构建。
在C++中已知 uchar* pPixel = new uchar[m_pdoc->m_OrigImg.cols*m_pdoc->m_OrigImg.rows * 2]; long nW, nH, nB; m_pdoc->GetOrigImg(&nW, &nH, &nB, pPixel); 请问该怎么遍历pPixel的所有像素 在C++中已知 uchar* pPixel = new uchar[m_pdoc->m_OrigImg.cols*m_pdoc->m_OrigImg.rows * 2]; long nW, nH, nB; m_pdoc->GetOrigImg(&nW, &nH, &nB, pPixel); 请问该怎么遍历pPixel的所有像素
你可以使用嵌套的循环来遍历 `pPixel` 的所有像素。假设 `m_pdoc->m_OrigImg.cols` 表示图像的宽度,`m_pdoc->m_OrigImg.rows` 表示图像的高度,每个像素占用 2 字节,可以按照以下方式进行遍历:
```cpp
for (int y = 0; y < m_pdoc->m_OrigImg.rows; y++) {
for (int x = 0; x < m_pdoc->m_OrigImg.cols; x++) {
// 计算当前像素的索引
int index = (y * m_pdoc->m_OrigImg.cols + x) * 2;
// 获取像素值
uchar pixelValue1 = pPixel[index]; // 第一个字节
uchar pixelValue2 = pPixel[index + 1]; // 第二个字节
// 在这里处理像素值
// ...
// 示例:将像素值设置为 0
pPixel[index] = 0;
pPixel[index + 1] = 0;
}
}
```
上述代码中,变量 `x` 和 `y` 分别表示当前像素的横坐标和纵坐标。通过计算当前像素在一维数组 `pPixel` 中的索引,可以访问到每个像素的值。你可以在内部循环中处理每个像素的值,例如修改像素值或者进行其他操作。