Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安装对opencv python包的gstreamer支持_Python_Python 3.x_Opencv_Gstreamer - Fatal编程技术网

安装对opencv python包的gstreamer支持

安装对opencv python包的gstreamer支持,python,python-3.x,opencv,gstreamer,Python,Python 3.x,Opencv,Gstreamer,我已经从源代码构建了自己的opencv python包 import cv2 print(cv2.__version__) 印刷品:3.4.5 现在我面临的问题是如何使用opencv的VideoCapture类中的gstreamer。我试图让这个最小的工作示例在python3上运行 cap = cv2.VideoCapture("videotestsrc ! appsink") if not cap.isOpened(): print("Cannot capture test src

我已经从源代码构建了自己的opencv python包

import cv2
print(cv2.__version__)
印刷品:3.4.5

现在我面临的问题是如何使用opencv的VideoCapture类中的gstreamer。我试图让这个最小的工作示例在python3上运行

cap = cv2.VideoCapture("videotestsrc ! appsink")

if not cap.isOpened():
    print("Cannot capture test src. Exiting.")
    quit()

while True:
    ret, frame = cap.read()
    if ret == False:
        break
    cv2.imshow("CVtest",frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
捕获失败,生成上面的打印内容(请参见
if
语句)。我检查:

import cv2
print(cv2.getBuildInformation())
印刷品:

Video I/O:
DC1394:                      NO
FFMPEG:                      NO
  avcodec:                   NO
  avformat:                  NO
  avutil:                    NO
  swscale:                   NO
  avresample:                NO
GStreamer:                   NO
libv4l/libv4l2:              NO
v4l/v4l2:                    linux/videodev2.h
看到这一点,我的gstreamer管道无法正常工作是完全有道理的。在制作OpenCV的过程中,我确保WITH_GSTREAMER已设置为ON(它已经设置为ON)。问题仍然存在。我甚至还试着将“0”和“10”设置为“开”。从cv2 python模块启用gstreamer仍然不走运

在任何人建议使用pip3安装cv2之前。我也试过了。从pip获取包的问题是,它根本不允许您配置gstreamer支持


有人能在这里提供帮助吗?

我能够解决这个问题,得到了一些专家的帮助。查看cmake输出提示,可以发现问题:

-- Checking for module 'gstreamer-base-0.10'
--   No package 'gstreamer-base-0.10' found
-- Checking for module 'gstreamer-video-0.10'
--   No package 'gstreamer-video-0.10' found
-- Checking for module 'gstreamer-app-0.10'
--   No package 'gstreamer-app-0.10' found
-- Checking for module 'gstreamer-riff-0.10'
--   No package 'gstreamer-riff-0.10' found
-- Checking for module 'gstreamer-pbutils-0.10'
--   No package 'gstreamer-pbutils-0.10' found
在ccmake期间,我将\u GSTREAMER和\u GSTREAMER\u 0\u 10都设置为ON。似乎cmake更喜欢gstreamer0.10标志而不是gstreamer1.0标志。由于我只安装了gstreamer1.0,opencv完全无法设置gstreamer依赖项

我确保对所有以前部署的二进制文件进行了检查:

cd <opencv-src>/build 
sudo make uninstall
当我

import cv2
print(cv2.getBuildInformation())
我的控制台现在输出

Video I/O:
DC1394:                      NO
FFMPEG:                      NO
  avcodec:                   NO
  avformat:                  NO
  avutil:                    NO
  swscale:                   NO
  avresample:                NO
GStreamer:                   
  base:                      YES (ver 1.8.3)
  video:                     YES (ver 1.8.3)
  app:                       YES (ver 1.8.3)
  riff:                      YES (ver 1.8.3)
  pbutils:                   YES (ver 1.8.3)
libv4l/libv4l2:              NO
v4l/v4l2:                    linux/videodev2.h


底线是,如果您确实想要gstreamer1.0,请不要在cmake期间将_GSTREAMER_0_10设置为ON。在这种情况下,您必须仅为那些在Windows上遇到相同问题的用户设置\u GSTREAMER ON

。。。我必须设置以下CMake选项:

  • 仅将“WITH\u GSTREAMER”选项设置为True,“WITH\u GSTREAMER\u 0\u 10”必须为FALSE
  • 添加新条目“GSTREAMER_DIR”=(GSTREAMER的路径) 对我来说是“C:/gstreamer/1.0/x86_64” 我找到了这个解决方案

  • 我的OpenCV版本:3.4.3

    安装包
    libgstreamer1.0-dev
    libgstreamer-plugins-base1.0-dev
    帮助我解决了这个问题

    sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    

    如何在opencv python版本4.1.2中安装DC1394?没有CAP_DC1394,我无法为我的IP摄像头设置缓冲区大小。
    sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev