gpt4 book ai didi

c++ - GstBuffer 到颜色垫

转载 作者:行者123 更新时间:2023-11-28 06:16:12 25 4
gpt4 key购买 nike

GstBuffer *gstImageBuffer = gst_app_sink_pull_buffer((GstAppSink*)app_data.gst_data.sink);
Mat matLeft = Mat(Size(width, height),CV_8U, (char*)GST_BUFFER_DATA(gstImageBuffer));

我可以提取缓冲区并转换为 OpenCv Mat 对象,但是是灰度的。我想拉缓冲区的颜色。我知道我的流是彩色的,在终端中创建相同的管道。我一直在寻找没有成功的解决方案。我正在使用 gstreamer-0.10 和 opencv-2.4.10。

最佳答案

终于在这篇文章的帮助下Changing cv::Mat with image copied from buffer affects original image我可以拉缓冲区的颜色。现在缓冲区的大小是有意义的,640*360*3。

我必须以不同的方式将 appsink 与 ffmpegcolorspace 元素链接起来:

gst_element_link_filtered(data->gst_data.converter, data->gst_data.sink, gst_caps_new_simple("video/x-raw-rgb", NULL))

然后在拉取缓冲区时:

gstImageBuffer = gst_app_sink_pull_buffer((GstAppSink*)app_data.gst_data.sink);
matLeft = Mat(Size(width, height), CV_8UC3, (char*)GST_BUFFER_DATA(gstImageBuffer));
cvtColor(matLeft, matLeft, CV_RGB2BGR);

关于c++ - GstBuffer 到颜色垫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30248753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com