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,要获得最后一个版本,您需要从源代码编译它。
这里有两个关于如何做到这一点的教程:
- 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
- http://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu/
第一个用于 Fedora
的 Python 2.7
,第二个用于 Ubuntu
的 Python 3.4
。
我正在研究一个 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,要获得最后一个版本,您需要从源代码编译它。
这里有两个关于如何做到这一点的教程:
- 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
- http://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu/
第一个用于 Fedora
的 Python 2.7
,第二个用于 Ubuntu
的 Python 3.4
。