我需要处理来自USB相机的视频,但我不知道如何将流保存在内存中。我找到了一个在窗口中显示它的代码,但我在显示之前找不到它的存储位置。任何人都可以帮我解决这个问题吗?
如果你检查我的另一个答案,你会看到该函数cvQueryFrame()
从相机中检索帧并将其存储在 color_frame
中,这是一个类型 IplImage*
的变量。OpenCV 使用类型 IplImage
来表示内存中的图像。当然,这个例子展示了如何使用OpenCV的C接口,所以如果你打算使用C++接口,你必须研究cv::Mat
。
无论如何,从相机检索帧并将其保存在内存中以供以后使用需要具有缓冲机制来存储帧。我建议你研究一下循环缓冲区(又名环形缓冲区(,看看它们是如何工作的:
- C + OpenCV:带有循环缓冲区的 IplImage
- 循环缓冲区的线程安全实现
- 如何实现 cv::Mat 对象的循环缓冲区 (OpenCV(?