我有NVIDIA Jetson Nano和FullHD Ip相机。摄像机流RTSP / h264。我想从这台相机的python脚本中解码帧以进行分析。
CPU 解码
因此,我尝试使用类似的方法:
# import the necessary packages
from imutils.video import VideoStream
import imutils
import time
import cv2
# grab a reference to the webcam
print("[INFO] starting video stream...")
#vs = VideoStream(src=0).start()
vs = VideoStream(src="rtsp://login:password@192.168.1.180").start()
time.sleep(2.0)
# loop over frames
while True:
# grab the next frame
frame = vs.read()
# resize the frame to have a maximum width of 500 pixels
frame = imutils.resize(frame, width=500)
# show the output frame
cv2.imshow("Frame", frame)
key = cv2.waitKey(1) & 0xFF
# if the `q` key was pressed, break from the loop
if key == ord("q"):
break
# release the video stream and close open windows
vs.stop()
cv2.destroyAllWindows()
那是可行的,但是以这种方式在CPU上解码帧。如何使用GPU解码器?
GPU解码
cv2.VideoCapture与GStreamer后端一起使用:
import cv2
pipeline = "rtspsrc location=\"rtsp://login:password@host:port/\" ! rtph264depay ! h264parse ! omxh264dec ! nvvidconv ! video/x-raw, format=(string)BGRx! videoconvert ! appsink"
capture = cv2.VideoCaputure(pipeline, cv2.CAP_GSTREAMER)
while capture.isOpened():
res, frame = capture.read()
cv2.imshow("Video", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
capture.release()
cv2.destroyAllWindows()
转载说明