【发布时间】:2016-09-30 16:17:36
【问题描述】:
我正在使用将点存储为 Vector 数据类型的代码,如下所示:
RECT head;
head.left = pt1.x;
head.right = pt2.x;
head.top = pt1.y;
head.bottom = pt2.y;
detectBox->push_back(head);
这属于一个函数,该函数具有一个 for 循环,该循环将多个“head”实例存储到detectBox中。这个函数是这样声明的:
void GetHeads(cv::Mat Img, vector<RECT>* detectBox)
其中 Img 只是一个普通的黑白图像,其中包含通过其他过程提取的头部。我现在的问题是如何查看已存储在检测框内的点?我想在 for 循环之外访问它们以用于其他事情。当我尝试打印出变量时,我只能返回地址(0000004FA8F6F31821 等)
另外,detectBox 在代码中是一个灰色阴影(不确定这意味着什么)。
完整的代码可以在我的其他与相同功能相关的问题中找到,这里:
C++ CvSeq Accessing arrays that are stored
-----编辑-----
尝试的方法和相关的错误/输出:
第一:
std::cout << "Back : " << &detectBox->back << std::endl;
'&':对绑定成员函数表达式的非法操作
第二:
std::cout << "Back : " << detectBox->back << std::endl;
'std::vector>::back':非标准语法;使用 '&' 创建指向成员的指针
第三:(注意,没有错误,但没有有用的信息输出)
std::cout << "Detect Box : " << detectBox << std::endl;
检测框:00000062BF0FF488
第四:
std::cout << "Detect Box : " << &detectBox[1] << std::endl;
检测框:000000CB75CFF108
【问题讨论】:
-
"打印变量" - 你是如何打印它们的,让我们看看更多的代码。虽然没有看到它,但我猜您正在打印您传入的变量的指针,而不是向量的内容。
-
灰色阴影 - 可以是任何东西或什么都不是,但通常表示“未使用”。
-
@UKMonkey 通过打印变量,我的意思是我只是想使用“cout”来找出里面存储的内容
-
但我们不知道您是如何尝试打印它们的 - 鉴于打印出了问题,这是您跳过的问题的一个相当重要的部分。
-
查看添加的代码链接:)
标签: c++ opencv vector structure push-back