[GStreamer] GstStructure的用法

参考:

二、GstStructure_李尔阳的博客-CSDN博客

总结:

GstStructure 是一个键值对结构,每一个GstStructure 都只有一个 key 和一个 value , key 是 GQuark 类型,value 是 GType 类型。

/**
 * GstStructure:
 * @type: the GType of a structure
 *
 * The GstStructure object. Most fields are private.
 */
struct _GstStructure {
  GType type;

  /*< private >*/
  GQuark name;
};

创建 GstStructure 的时候可以一次性传入很多 键值对,gstreamer内部会依次创建 GstStructure 然后把他们连起来,然后把这些创建好的 GstStructure 对象归纳到一个 GstStructureImpl 内部,同时给 GstStructureImpl 一个 name。

typedef struct
{
  GstStructure s;

  /* owned by parent structure, NULL if no parent */
  gint *parent_refcount;

  GArray *fields;
} GstStructureImpl;

 具体的用法见参考连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Opencv提供了支持Gstreamer的模块,可以使用Gstreamer在Opencv中进行视频流处理。使用Gstreamer需要安装Gstreamer以及相关插件,然后在编译Opencv时加入相应的参数,具体方法如下: 1.安装Gstreamer及插件 在Linux系统中可以使用以下命令安装: ``` sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav ``` 2.编译安装Opencv 在编译Opencv时加入Gstreamer支持,需要在cmake命令中加入以下参数: ``` -D WITH_GSTREAMER=ON -D BUILD_opencv_videoio=ON ``` 其中,`WITH_GSTREAMER`参数表示开启Gstreamer支持,`BUILD_opencv_videoio`参数表示编译Opencv的视频模块。完整的cmake命令如下: ``` cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=OFF \ -D WITH_CUFFT=OFF \ -D WITH_GSTREAMER=ON \ -D BUILD_opencv_videoio=ON \ -D BUILD_opencv_imgcodecs=ON \ -D BUILD_opencv_highgui=ON \ -D BUILD_EXAMPLES=ON \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D OPENCV_EXTRA_MODULES_PATH=/home/user/opencv_contrib-master/modules \ -D CUDA_ARCH_PTX="" \ -D CUDA_ARCH_BIN="" \ -D BUILD_SHARED_LIBS=ON \ -D WITH_FFMPEG=ON \ -D WITH_TBB=ON \ -D WITH_OPENMP=ON \ -D ENABLE_FAST_MATH=ON \ -D CUDA_FAST_MATH=OFF \ -D WITH_OPENCL=OFF \ -D WITH_IPP=ON \ -D WITH_MKL=ON \ -D WITH_V4L=ON \ -D WITH_XINE=ON \ -D ENABLE_PRECOMPILED_HEADERS=OFF \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_TESTS=OFF \ -D INSTALL_OPENCV=ON \ -D OPENCV_PYTHON3_INSTALL_PATH=/usr/local/lib/python3.7/dist-packages \ -D OPENCV_GENERATE_PKGCONFIG=ON \ ../opencv-master ``` 3.使用Opencv和Gstreamer处理视频流 使用Opencv和Gstreamer处理视频流的方法与常规的Opencv视频流处理基本一致,只需要指定使用Gstreamer的视频捕获设备即可。例如,以下代码使用Gstreamer捕获从摄像头中获取的视频流并显示在窗口中: ```python import cv2 cap = cv2.VideoCapture("v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480 ! videoconvert ! appsink", cv2.CAP_GSTREAMER) while True: ret, frame = cap.read() if not ret: break cv2.imshow("video", frame) if cv2.waitKey(10) == 27: break cap.release() cv2.destroyAllWindows() ``` 以上代码中,`v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480 ! videoconvert ! appsink`指定使用Gstreamer捕获视频流,并设置捕获的设备为`/dev/video0`,视频流的宽和高分别为`640`和`480`。`videoconvert`表示进行视频流格式转换,`appsink`表示将视频流发送给Opencv进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值