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