使用 Gstreamer 和 Python 3 OpenCV 在桌面上使用 Flir Hadron 相机显示和保存视频时出现问题

问题描述 投票:0回答:1

我正在尝试使用 Python 3 OpenCV 中的 gstreamer 管道显示和保存我的 Flir Hadron 相机视频。我有一个完美工作的 Gstreamer 管道,能够以高分辨率显示和保存视频,但是当我执行 Python 3 代码来显示和保存时,我收到以下错误:(无法打开相机。现有)在我看来这意味着我的 camset 代码行有问题,但我仍然不知道如何解决这个问题。任何帮助将不胜感激。

Gstreamer pipline(显示并保存):

gst-launch-1.0 v4l2src io-mode=4 device=/dev/video0 do-timestamp=true ! tee name=t ! 'video/x-raw, format=UYVY, width=1920, height=1080, framerate=30/1' ! queue leaky=1 ! xvimagesink sync=false t. ! queue ! nvvidconv ! nvv4l2h265enc bitrate=8000000 ! h265parse ! qtmux ! filesink location=/home/nvidia/Desktop/RGB_$(date '+%Y-%m-%d_%H-%M-%S').mp4 -e 

我尝试更改 camset 代码行,但没有更好的结果,还尝试了其他 python3 代码,您将在下面找到它,但它也不起作用:

python3代码:

import time
import cv2

# Cam properties
fps = 30.
frame_width = 640
frame_height = 480
# Create capture
cap = cv2.VideoCapture(0)

# Set camera properties
cap.set(cv2.CAP_PROP_FRAME_WIDTH, frame_width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, frame_height)
cap.set(cv2.CAP_PROP_FPS, fps)

# Define the gstreamer sink
gst_str_rtp = "appsrc ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=127.0.0.1 port=5000"


# Check if cap is open
if cap.isOpened() is not True:
    print "Cannot open camera. Exiting."
    quit()

# Create videowriter as a SHM sink
out = cv2.VideoWriter(gst_str_rtp, 0, fps, (frame_width, frame_height), True)

# Loop it
while True:
    # Get the frame
    ret, frame = cap.read()
    # Check
    if ret is True:
        # Flip frame
        frame = cv2.flip(frame, 1)
        # Write to SHM
        out.write(frame)
    else:
        print "Camera error."
        time.sleep(10)

cap.release()




python opencv user-interface gstreamer videodisplay
1个回答
0
投票

您的主要问题是VideoWriter不支持UYVY,它只支持BGR和RGB颜色格式。另外,最好使用BGR格式的flip,用UYVY可能达不到预期的结果。

您可以将读取的 UYVY 帧转换为 BGR:

frame = cv2.cvtColor(frame,cv2.COLOR_YUV2BGR_UYVY)

或使用 gstreamer 后端以及转换为 BGR 的管道。

还为 VideoWriter 设置 gstreamer 后端:

out = cv2.VideoWriter(gst_str_rtp, cv2.CAP_GSTREAMER, 0, ... 
© www.soinside.com 2019 - 2024. All rights reserved.