首页 > 解决方案 > Nvidia pi相机gstream与python共享内存

问题描述

我正在尝试使用 python 在 gstreamer 上创建共享内存,我想从 gstreamer 获取帧并处理它们,然后使用 opencv 再次使用 gstreamer 写入共享内存。在此之后,我想使用 gstreamer 阅读或查看屏幕上的帧。

我可以在 python 上使用 picamera 运行 gstreamer。它工作没有问题。我也可以在 /tmp/foo 下创建套接字,我可以看到它。问题是当我尝试将此共享内存与 gstreamer 连接时,我看不到输出。我正在使用 jetson nano 和 nvidia 网站上官方发布的最新 ubuntu。

蟒蛇代码:

import cv2
print(cv2.__version__)


# Cam properties
fps = 30.
frame_width = 1920
frame_height = 1080



dispW=640
dispH=480
flip=2
#Uncomment These next Two Line for Pi Camera
camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink'
cam= cv2.VideoCapture(camSet)
 
gst_str = "appsrc ! videoconvert ! shmsink socket-path=/tmp/foo sync=true wait-for-connection=false shm-size=10000000"


# Create videowriter as a SHM sink
out = cv2.VideoWriter(gst_str, 0, fps, (frame_width, frame_height), True)



while True:
    ret, frame = cam.read()
    #cv2.imshow('nanoCam',frame)
    frame = cv2.flip(frame,1)
    out.write(frame)
    if cv2.waitKey(1)==ord('q'):
        break
cam.release()
cv2.destroyAllWindows()

和我正在使用的 gstreamer 命令:

gst-launch-1.0 shmsrc socket-path=/tmp/foo ! 'video/x-raw, format=(string)I420, width=(int)160, height=(int)122, framerate=(fraction)9/1' ! xvimagesink

结果是:

在此处输入图像描述

我看不到 pi 相机的真实输出。我单独测试没有问题。这里可能是什么问题?

标签: pythonopencvgstreamernvidia

解决方案


推荐阅读