我正在从相机中捕捉视频帧。意图是当用户按下“A' A”时将当前帧Mat frame
保存到Mat A
。并在用户按下' B'时将其保存到Mat B
。问题是最终我得到了所有3个矩阵A
,B
和frame
中的最后一帧。
在第二个代码片段中,我发现如果我将Mat frame
置于帧处理循环中,我会得到我想要的但我不明白为什么?有人可以解释一下吗?
VideoCapture cap(0);
Mat A,B,frame;
while(true) {
if (!cap.read(frame)) break;
imshow("frame",frame);
char ch = waitKey(33);
if (ch == 'A') A = frame;
if (ch == 'B') B = frame;
if (ch == 27) {
break;
}
}
imshow("frame",frame);
imshow("A",A);
imshow("B",B);
waitKey(0);
正确使用代码:
VideoCapture cap(0);
Mat A,B,X;
while(true) {
Mat frame;
if (!cap.read(frame)) break;
imshow("frame",frame);
char ch = waitKey(33);
if (ch == 'A') A = frame;
if (ch == 'B') B = frame;
if (ch == 27) {
X = frame; // just last frame
break;
}
}
imshow("frame",X);
imshow("A",A);
imshow("B",B);
waitKey(0);