我试图声明一个结构,
struct Sample {
int classLabel[2];
vector<Mat> image;
};
现在我要使用它,我将其初始化为
Sample sample1;
并在
sample1
中保存5张图像,并创建另一个Sample sample2
并保存另外5张图像。现在我想将这两个样本保存在
Sample
的 vector 中。我宣布:vector<Sample> samples;
现在当我尝试在样本中push_back sample1和sample2时
samples.push_back(sample1);
samples.push_back(sample2);
它什么也没有给我。样本显示为
samples[2]
,但在classLabel=???
和image=????
前面不包含带问号的内容任何人都能指导我在哪里做错了。我如何使它可用。我的意思是将struct
sample1
和sample2
保存在samples
中。会感激的。
问候
最佳答案
vector<Sample> samples;
samples.push_back(sample1);
samples.push_back(sample2);
此后,
samples
的大小为2。因此,您只能访问samples[0]
和samples[1]
,而不能访问samples[2]
。如@sammy所评论,
Watch
中的变量在VS中可能显示不正确的值。要使其正常工作,您可能需要执行以下步骤:
/Od
选项。 查看here了解更多信息。
编辑:对于注释中的代码:
sample1.classlabel[0] = 0;
sample1.classlabel[1]=1;
vector<Mat> temp;
temp.push_back(img1);
temp.push_back(img2);
temp.push_back(img3);
sample1.image=temp;
sample2.classlabel[0] = 0;
sample2.classlabel[1]=1;
vector<Mat> temp1;
temp.push_back(img5); // problem
temp.push_back(img6); // problem
temp.push_back(img7); // problem
sample2.image=temp1;
samples.push_back(sample1);
samples.push_back(sample2);
3个问题行应更改为
temp1.push_back(img5);
temp1.push_back(img6);
temp1.push_back(img7);
关于c++ - 如何使用包含vector <Mat>的Struct Vector,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22180054/