我需要使用 GStreamer 将数据传递给一些 OpenCV/Cuda 分类和深度学习系统。
问题是我是 GStreamer 和 Cuda 的新手,所以我需要做一些简单的例子来组合尽可能少的元素——这里是 OpenCV 和 Gstreamer。
现在我只希望 GStreamer 在循环中逐帧将“videotestsrc pattern=ball”传递给 cv2.imshow()
问题是我似乎无法打开 cv2.VideoCapture() 元素-正确是因为管道错误
我现在已经花了几个小时并且已经“放弃”了
OpenCV 是 v3.4.0 - 使用 GStreamer 支持编译 Python 是 3.6.8
这是我现在拥有的代码 -
我用谷歌搜索和搜索并尝试了许多管道组合,但没有什么能让我打开视频捕捉元素
#!/usr/bin/env python3
import cv2
cap = cv2.VideoCapture("videotestsrc ! video/x-raw,framerate=20/1 ! appsink", cv2.CAP_GSTREAMER)
# Commentet out to continiue to capture
# Evaluates true => app closes
#if not cap.isOpened():
# print('VideoCapture not opened')
# exit(0)
while(True):
ret, frame = cap.read()
print(ret) # 'False' when run
print(frame) # 'None' when run
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
cap.isOpened() 返回 false
cap.read() 返回 false,无