我正在尝试在我的 OpenCV 程序中双重缓冲我的 VideoCapture 输出(以减少闪烁)。这是到目前为止的概念:
Mat frameA, frameB; //alternating between these two for storage
VideoCapture cap(0); // open the default camera
for(;;)
{
cap >> frameB;
waitKey(30);
cap >> frameA;
waitKey(30);
putText(frameA,SSTR("A"),Point(frameA.cols/2,frameA.rows/2),3,5,CV_RGB(250,200,200));
putText(frameB,SSTR("B"),Point(frameA.cols/2,frameB.rows/2),3,5,CV_RGB(250,200,200));
imshow("A",frameA);
imshow("B",frameB);
waitKey(30);
}
作为一个简单的测试,我将文本 A 或 B 写在框架的中心。但是输出有 A 和 B 重叠 - 好像没有两个单独的帧。我究竟做错了什么?
我已经通过使用 .clone() 运算符提出了一个解决方案,但我知道这种事情在 CPU(?)方面非常昂贵,所以想避免它。希望我们这里有一些 C++ 双缓冲专家。