如何使用OpenCV和GStreamer发布视频设备?

时间:2018-06-14 08:47:49

标签: opencv gstreamer

我想知道以下"用例"中描述的场景中的行为。我需要更改行为以正确使用我的程序。

情景:

首先,我打开一个带有GStreamer上限的OpenCV VideoCapture,如下面的代码所示。我正在使用 / dev / device1

cv::VideoCapture cap;
cap.open(v4l2src device=/dev/video1 ! video/x-raw,format=YUY2,width=640,height=480 ! appsink);

这很好用,我可以从管道中读出图像。之后我拔下视频设备。我实现了一种自动检测,在检测到设备被拔出后释放VideoCapture。它会像这样释放设备:

cap.release();

如果我现在插入摄像头,则会在设备列表中创建一个新设备。它被称为 / dev / video2 。为什么不 / dev / video1 ?我找到的唯一解决方法是杀死使用 / dev / video1 的程序。如果程序被杀,我可以插入设备并创建 / dev / video1

我的问题:

是否有可能制作一个" Real Release"通过OpenCV和GStreamer,设备 / dev / video1 可以再次重复使用吗?

我的设置:

  • Ubuntu 16.04
  • Logitech Brio网络摄像头
  • OpencCV 3.4.1(Gstreamer支持)
  • Gstreamer(最新)

感谢帮助!

0 个答案:

没有答案