python - 通过 OpenCV 使用实时三摄像头馈送时出现 GStreamer-CRITICAL 错误
问题描述
我正在使用 OpenCV 同时从三个 USB 摄像头读取实时视频源。该实时视频源被逐帧解析为无人机检测设备的神经网络(使用英特尔的 OpenVINO 神经网络)。
仅使用单个摄像头时,屏幕上会弹出以下警告,但程序似乎仍然可以完美执行:
(python3:4235):GStreamer-CRITICAL **:gst_element_get_state:断言'GST_IS_ELEMENT(元素)'失败
但是,当同时使用所有三个摄像头时,终端中会出现以下错误,并且程序根本无法运行:
(python3:4041): GStreamer-CRITICAL **: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed VIDEOIO ERROR: V4L: can't open camera by index 0 threeCam_droneDetection.py:90: DeprecationWarning: from_ir() method of IENetwork is已弃用。请使用 IENetwork 类构造函数创建有效的 IENetwork 实例 net = IENetwork.from_ir(model=model_xml, weights=model_bin) 相机不工作
(python3:4041):GStreamer-CRITICAL **:gst_element_get_state:断言'GST_IS_ELEMENT(元素)'失败
(python3:4041):GStreamer-CRITICAL **:gst_element_get_state:断言'GST_IS_ELEMENT(元素)'失败
我曾尝试使用代码尝试解决问题,但在使用程序中的所有三个摄像头时,此 GStreamer 错误不断出现。我什至制作了一个单独的程序来简单地调出实时摄像头供稿(除了将它们输出到屏幕之外,没有对帧做任何事情,cv2.imshow()
并且这个程序完美地执行。所以我认为有什么问题我没有在无人机探测程序。
以下是我为三摄像头实况无人机检测编写的python脚本的片段:
#Initialize camera frame dimension variables
camera_width = 244
camera_height = 244
#Initialize 3 cameras and set their frame dimensions
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, camera_width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, camera_height)
cap2 = cv2.VideoCapture(1)
cap2.set(cv2.CAP_PROP_FRAME_WIDTH, camera_width)
cap2.set(cv2.CAP_PROP_FRAME_HEIGHT, camera_height)
cap3 = cv2.VideoCapture(2)
cap3.set(cv2.CAP_PROP_FRAME_WIDTH, camera_width)
cap3.set(cv2.CAP_PROP_FRAME_HEIGHT, camera_height)
while True:
#Read camera frames and return value (sees if cameras are working)
ret, liveframe = cap.read()
ret2, liveframe2 = cap2.read()
ret3, liveframe3 = cap3.read()
#Breaks script if any of the cameras are not working
if (not ret or not ret2 or not ret3):
print("A camera is not working")
break
# Run inference
res = exec_net.infer(inputs={input_blob: processedImg})
res2 = exec_net.infer(inputs={input_blob: processedImg2})
res3 = exec_net.infer(inputs={input_blob: processedImg3})
# Access the results and get the index of the highest confidence score
output_node_name = list(res.keys())[0]
res = res[output_node_name]
output_node_name2 = list(res2.keys())[0]
res2 = res2[output_node_name2]
output_node_name3 = list(res3.keys())[0]
res3 = res3[output_node_name3]
# Predicted class index.
idx = np.argsort(res[0])[-1]
idx2 = np.argsort(res2[0])[-1]
idx3 = np.argsort(res3[0])[-1]
对于如何消除这些 GStreamer 错误并让相机正常工作,我真的很感激一些建议。谢谢!
解决方案
推荐阅读
- r - Stargazer 没有显示稳健 se 的观察次数
- r - 无法使用 R
- apache-kafka - 如何更改 Kafka Connect Source Connector 生成的主题名称
- python - 有没有办法获得 for 循环的第一个结果?
- javascript - Javascript 计时器比 php mysql 晚 5 小时
- c++ - 在 C++ 中的模板类中创建向量
- python - 使用 Cython 对 Python 进行性能优化
- rust - 向量
,整数向量与字符串向量,为什么即使元素在堆上,我也可以索引/复制 int 元素? - angular - angular - 当数组过滤器完成时分配一个变量
- python - 创建具有指定 RGB 值的颜色图