python - 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 相机的真实输出。我单独测试没有问题。这里可能是什么问题?
解决方案
推荐阅读
- java - 字符串 java 的 DateTimeFormatter 类型
- flutter - 如何等到键盘颤抖起来?
- java - Java 并发:机场模拟 - 如何允许飞机同时访问不同的登机口
- sql - Oracle - 获取具有最小值的两列条件的行
- angular - ngx-bootstrap + Angular 12 从另一个组件打开模式
- reactjs - 反应状态数组(第一个输入不起作用)
- ios - SQLite.Swift 错误:“连接”类型的值没有成员“键”
- ios - 外部供应商开发的IOS App的内部分发
- java - apache poi 读取 XSSFWorkbook,没有任何反应
- firebase - 云功能在 blaze 计划上出现 ENOTFOUND 错误