Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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
Python 显示OpenCV+;Gstreamer视频。如何管理窗口和GUI元素?_Python_Python 3.x_Opencv_Gtk_Gstreamer - Fatal编程技术网

Python 显示OpenCV+;Gstreamer视频。如何管理窗口和GUI元素?

Python 显示OpenCV+;Gstreamer视频。如何管理窗口和GUI元素?,python,python-3.x,opencv,gtk,gstreamer,Python,Python 3.x,Opencv,Gtk,Gstreamer,我使用Gstreamer管道来显示来自OpenCV的视频。开发环境-Python 3,Raspbian 守则的一部分: ... pipeline_s = "appsrc ! queue ! v4l2convert ! autovideosink sync=false" out = cv2.VideoWriter(pipeline_s, cv2.CAP_GSTREAMER, 0, 20.0, (1280,720)) while True: ret, frame = vs.read()

我使用Gstreamer管道来显示来自OpenCV的视频。开发环境-Python 3,Raspbian

守则的一部分:

...

pipeline_s = "appsrc ! queue ! v4l2convert ! autovideosink sync=false"
out = cv2.VideoWriter(pipeline_s, cv2.CAP_GSTREAMER, 0, 20.0, (1280,720))


while True:
    ret, frame = vs.read()
    if ret:
      out.write(frame)
      cv2.waitKey(1)
我不使用imshow方法进行显示,因为Gstreamer对Raspberry Pi 4上的OpenGL进行了更好的优化

启动时,视频将在标准Qt或GTK窗口中打开(取决于编译OpenCV的GUI)

如何在Python 3中管理此窗口(全屏、最小化、关闭)并添加自己的控件(按钮、菜单)?


谢谢你的回答

你所做的事情不需要GStreamer。您可以使用
cv2.imshow
显示视频,并根据需要添加按钮。不幸的是,使用Gstreamer pipline在Raspberry 4上显示视频比使用imshow更高效(分别占CPU负载的24-28%和35-50%)。这是因为Raspberry 4的GPU驱动程序存在问题。在《覆盆子3》中,情况正好相反,你所做的事情不需要GStreamer。您可以使用
cv2.imshow
显示视频,并根据需要添加按钮。不幸的是,使用Gstreamer pipline在Raspberry 4上显示视频比使用imshow更高效(分别占CPU负载的24-28%和35-50%)。这是因为Raspberry 4的GPU驱动程序存在问题。在《覆盆子3》中,情况正好相反。