Python 使用 Gstreamer 管道

Python with Gstreamer pipeline

我正在研究一个 Udoo,试图让相机拍摄一张我可以在里面操作的照片 Python。

到目前为止,相机可以使用

gst-launch-1.0 imxv4l2videosrc ! imxipuvideosink

我也可以和

合影

gst-launch-1.0 imxv4l2videosrc num-buffers=1 ! video/x-raw ! jpegenc ! filesink location=output.jpg

here 看来,您可以使用 OpenCV 直接从 Python 中的 gstreamer 流读取数据。

这是我的 python 代码:

import cv2
cam = cv2.VideoCapture("imxv4l2videosrc ! video/x-raw ! appsink")
ret, image = cam.read()

然而,ret是False,image什么都不是。

有些地方说这只适用于 OpenCV 3.0+,其他人说 2.4.x,但我似乎无法找到它适用于哪个版本的实际答案。

如果我需要更新到OpenCV 3.0,我应该更新哪一部分?我通过 python-opencv 包下的 apt 存储库下载了 OpenCV。那么我需要更新 Python 吗?我可以只从源代码构建 OpenCV,并且 Python 会自动使用最新版本吗?我很困惑。

Ubuntu/Debian 版本是旧版本 2。4.x,要获得最后一个版本,您需要从源代码编译它。

这里有两个关于如何做到这一点的教程:

  1. https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_fedora/py_setup_in_fedora.html#installing-opencv-from-source
  2. http://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu/

第一个用于 FedoraPython 2.7,第二个用于 UbuntuPython 3.4