我想知道以下"用例"中描述的场景中的行为。我需要更改行为以正确使用我的程序。
首先,我打开一个带有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 可以再次重复使用吗?
感谢帮助!