使用GStreamer/OpenCV进行轮换,而不增加延迟(Jetson Nano、OpenCV 4.1、GStreamer 1.0、Python)
我目前正在运行一个Python程序来显示Jetson Nano上RPi摄像头模块V2的视频。我正在使用OpenCV4.1和GStreamer 1.0。我了解,可以使用gstreamer和opencv旋转图像,如下所示: OpenCV:使用GStreamer/OpenCV进行轮换,而不增加延迟(Jetson Nano、OpenCV 4.1、GStreamer 1.0、Python),python,opencv,gstreamer,nvidia-jetson,Python,Opencv,Gstreamer,Nvidia Jetson,我目前正在运行一个Python程序来显示Jetson Nano上RPi摄像头模块V2的视频。我正在使用OpenCV4.1和GStreamer 1.0。我了解,可以使用gstreamer和opencv旋转图像,如下所示: OpenCV: def rotate_image(img, angle=0): w = 1280 h = 720 center = (w / 2, h / 2) matrix = cv2.getRotationMatrix2D(center, an
def rotate_image(img, angle=0):
w = 1280
h = 720
center = (w / 2, h / 2)
matrix = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated_img = cv2.warpAffine(img, matrix, (w, h), flags=cv2.INTER_LINEAR)
return rotated_img
# This has been tested as both a Mat (using CPU) and as a UMat (with OpenCL ==> using GPU)
GStreamer管道:
pipeline = 'nvarguscamerasrc ! video/x-raw(memory:NVMM),width=1280, height=720, framerate=30/1, format=NV12 ! nvvidconv flip-method=0 ! video/x-raw,width={}, height={},format=BGRx ! rotate angle=0.78 ! videoconvert ! video/x-raw, format=BGR ! appsink '
# The key is "! rotate angle 0.78 !". rotate is a 'bad' gstreamer plugin
这两种方法都完全适用于旋转视频,但问题是无论是使用gstreamer旋转插件、OpenCV Mat还是OpenCV UMat,这两种方法都会增加显著的延迟。有没有人能告诉我,是否有任何方法可以使视频流(或每一帧)的旋转延迟更小?谢谢如果您只想显示旋转后的图像,则可以在GPU上的着色器程序中使用或旋转图像。如果您只想显示旋转后的图像,则可以在GPU上的着色器程序中使用或旋转图像。