gpt4 book ai didi

C++(和 openCV): Accumulating a number of Mat in vector

转载 作者:行者123 更新时间:2023-11-28 00:38:10 26 4
gpt4 key购买 nike

我正在从网络摄像头抓取帧并将它们显示在窗口上。为了进行时间分析,我在抓取帧时将帧保持在 vector 上。为了对其进行测试,当我的 vector 大小达到 100 时,我尝试可视化到目前为止存储的所有帧。

奇怪的是,vector里面确实有100帧,但都是一样的,对应的是最后一帧。

代码:

Mat frame;       

_cap.start(0); //VideoCapture object

vector<Mat> seq;
while(1)
{
_cap.getFrame(frame);

seq.push_back(frame);

imshow("a", seq[0]);

if (seq.size() == 100)
{
for (int n = 0; n < seq.size(); n++)
{
cout << "I'm in" << endl;
imshow("b", seq[n]);
waitKey(0);
}
}

waitKey(30);
}

最佳答案

您从 VideoCapture 获得的 Mat 都指向相同的驱动程序内存。

垫a=b;做一个浅拷贝(相同的像素指针)

所以你需要:

 seq.push_back(frame.clone());

此处(即深拷贝)

关于C++(和 openCV): Accumulating a number of Mat in vector<Mat>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com