【发布时间】:2021-04-20 12:22:33
【问题描述】:
我可能遗漏了一些非常明显的东西,但我似乎无法完成这项工作。 我正在从灰度相机读取帧,然后我想通过 OpenCV VideoWriter 中的 gstreamer 将其编码为 H265。
这是我的 gstreamer 管道:
gst_out =('appsrc caps=video/x-raw,format=GRAY8,width=1280,height=800,framerate=30/1 ! '
'videoconvert ! omxh265enc ! video/x-h265, stream-format=byte-stream ! '
'h265parse ! filesink location=test.h265 ')
writer= cv2.VideoWriter(gst_out, cv2.CAP_GSTREAMER, 0, 30, (1280, 800), True)
但是当我尝试在其中写入帧时,我得到了错误
[ WARN:0] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap_gstreamer.cpp (1629) writeFrame OpenCV | GStreamer warning: cvWriteFrame() needs images with depth = IPL_DEPTH_8U and nChannels = 3.
我不明白,因为它应该接受 GRAY8 格式,并且我已验证该帧仅作为一个通道。如果我将帧转换为 BGR,它可以工作,但这不是我想要的,因为我只需要保存灰度图像,而且我也不明白为什么当我在管道中指定 GRAY8 时它会接受 BGR 帧。
非常感谢任何帮助。
【问题讨论】:
-
如果您打算创建灰度视频,那么为什么要构造
cv2.VideoWriter并将isColor参数设置为True? -
天哪,你是对的!我知道我在某个地方犯了一些愚蠢的错误,我现在觉得很愚蠢。非常感谢!
-
别担心,它发生了:)
-
我认为@DanMašek 应该写这个作为答案,并且 OP 应该接受它:-)
-
@JonasVautherin 去吧,如果你喜欢它。我很忙,并没有动力去做那件事。 ;)