如何解决使用OpenCV捕获图像而不是视频
我正在使用OpenCV4从相机读取内容。类似于网络摄像头。效果很好,代码有点像这样:
cv::VideoCapture cap(0);
cap.set(cv::CAP_PROP_FRAME_WIDTH,1600);
cap.set(cv::CAP_PROP_FRAME_HEIGHT,1200);
while (true)
{
cv::Mat mat;
// wait for some external event here so I know it is time to take a picture...
cap >> mat;
process_image(mat);
}
问题是,这会产生许多视频帧,而不是单个图像。这很重要,因为就我而言,我既不需要也不需要处理30 FPS。实际上,我有一些特定的物理事件,这些事件会在某些时间触发从相机读取图像。因为OpenCV希望调用者想要视频,所以考虑到该类称为cv::VideoCapture
并不奇怪,它已经缓存了许多秒的帧。
我在图片中看到的总是几秒钟前。
我的问题:
- 是否可以刷新OpenCV缓冲区?
- 还是告诉OpenCV放弃输入,直到我告诉它拍摄另一张图片?
- 还是要获取最新的图像而不是最旧的图像?
我正在研究的另一个选择是直接使用V4L2而不是OpenCV。这样可以让我拍摄个人照片还是仅流式播放OpenCV之类的视频?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。