Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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
Nvidia pi摄像头gstream与python共享内存_Python_Opencv_Gstreamer_Nvidia - Fatal编程技术网

Nvidia pi摄像头gstream与python共享内存

Nvidia pi摄像头gstream与python共享内存,python,opencv,gstreamer,nvidia,Python,Opencv,Gstreamer,Nvidia,我试图使用python在gstreamer上创建共享内存,我想从gstreamer中获取帧并处理它们,然后使用opencv再次使用gstreamer写入共享内存。在此之后,我想使用gstreamer阅读或查看屏幕上的帧 我能够在python上使用picamera运行gstreamer。它正在工作,没有问题。 我还可以在/tmp/foo下创建套接字,我可以看到它。 问题是,当我尝试将此共享内存与gstreamer连接时,无法看到输出。 我使用JexNano最新的Ubuntu从英伟达网站的官方发布版

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

我能够在python上使用picamera运行gstreamer。它正在工作,没有问题。 我还可以在/tmp/foo下创建套接字,我可以看到它。 问题是,当我尝试将此共享内存与gstreamer连接时,无法看到输出。 我使用JexNano最新的Ubuntu从英伟达网站的官方发布版。

python代码:

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摄像机的真实输出。我单独测试过,没有问题。这里有什么问题