当前位置: 首页 > news >正文

基于GStreamer和FFmpeg的OpenCV安装和使用

前言

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。可用于开发实时的图像处理、计算机视觉以及模式识别程序。
在这里插入图片描述
OpenCV的主要目标是:

  • 为推进机器视觉的研究,提供一套开源且优化的基础库。不重造轮子。
  • 提供一个共同的基础库,使得开发人员的代码更容易阅读和转让,促进了知识的传播。
  • 透过提供不需要开源或免费的软件许可,促进商业应用软件的开发。
  • OpenCV现在也集成了对CUDA的支持。

本文简要介绍基于GStreamer和FFmpeg的OpenCV安装和使用。

安装

以Ubuntu为例进行说明:

安装GStreamer依赖库

apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-ugly gstreamer1.0-rtsp

apt-get install --reinstall gstreamer1.0-alsa gstreamer1.0-libav gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-pulseaudio libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libgstreamer1.0-0 

apt-get install gstreamer1.0-rtsp
apt-get install gstreamer1.0-tools  
apt-get install gstreamer1.0-plugins-base-apps

OpenCV依赖GStreamer和FFmpeg重编译

ln -s /docker/installs/FFmpeg/build_x64_release_shared/ /usr/local/ffmpeg

mkdir /usr/include/ffmpeg

cp /usr/local/ffmpeg/include/*/* /usr/include/ffmpeg/


vi /etc/ld.so.conf
添加/usr/local/ffmpeg/lib

ldconfig

使用Cmake配置编译选项(注意-D WITH_GSTREAMER=ON):

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_C_COMPILER=/usr/bin/gcc \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D WITH_TBB=ON \
-D BUILD_opencv_cudacodec=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=1 \
-D WITH_FFMPEG=ON \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D WITH_OPENGL=ON \
-D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_PYTHON3_INSTALL_PATH=/home/ubuntu/conda/envs/pytorch/lib/python3.6/site-packages \
-D WITH_NVCUVID=ON \
-D BUILD_opencv_python3=yes \
-D OPENCV_EXTRA_MODULES_PATH=/home/ubuntu/installs/opencv_contrib/modules \
-D PYTHON2_EXECUTABLE=/home/ubuntu/conda/envs/pytorch/bin/python \
-D PYTHON3_EXECUTABLE=/home/ubuntu/conda/envs/pytorch/bin/python \
-D PYTHON_INCLUDE_DIR=/home/ubuntu/conda/envs/pytorch/include/python3.6m \
-D PYTHON_INCLUDE_DIR2=/home/ubuntu/conda/envs/pytorch/include/python3.6m \
-D PYTHON2_LIBRARY=/home/ubuntu/conda/envs/pytorch/lib/libpython3.6m.so \
-D PYTHON3_LIBRARY=/home/ubuntu/conda/envs/pytorch/lib/libpython3.6m.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/home/ubuntu/conda/envs/pytorch/lib/python3.6/site-packages/numpy/core/include \
-D BUILD_EXAMPLES=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=7.5 ..

make -j8
sudo make install

测试使用

指定OpenCV VideoWriter backend

out = cv2.VideoWriter(file_path, cv2.CAP_GSTREAMER, 0, fps, (frame_width, frame_height), True) 

版权说明

本文为原创文章,独家发布在blog.csdn.net/TracelessLe。未经个人允许不得转载。如需帮助请email至tracelessle@163.com或扫描个人介绍栏二维码咨询。
在这里插入图片描述

参考资料

[1] Ubuntu上安装opencv-cuda加速_TracelessLe的博客-CSDN博客
[2] 使用Gstreamer处理RTSP视频流 - 探索字符串
[3] python-opencv-gstreamer-examples/gst_rtsp_server.py at master · mad4ms/python-opencv-gstreamer-examples
[4] Can’t play video on Ubuntu 16.04, GStreamer error - linux - openFrameworks
[5] gstreamer-cheat-sheet/rtmp.md at master · matthew1000/gstreamer-cheat-sheet

相关文章:

  • 高项 11 风险管理
  • 字节12年测试经验,从零基础软件测试到功能测试到自动化测试到测试开发,我整理了这二份8000字入门到入职的学习指南
  • SQL 为什么历经半个世纪却经久不衰?
  • 【数据结构初阶】八大排序(三)——归并排序计数排序
  • VI 使用技巧
  • Disruptor生产和消费模式详解及高级应用(并行模式)
  • [算法周训 3] 字符串训练2
  • 判断月份所在的季节
  • 大数据毕设选题 - flask疫情数据可视化系统(python)
  • 记录第一次开源流计算框架Flink代码的贡献
  • 共码未来 | 助力实现事半功倍的前端开发体验
  • 客户端存储localStorage和sessionStorage以及Cookie
  • Python学习笔记:Jupyter Notebook快速入门案例:学习时间与成绩的关系
  • 嵌入式软件工程师面试题(三)
  • K8S搭建共享存储(以MySQL例)
  • 【刷算法】求1+2+3+...+n
  • ComponentOne 2017 V2版本正式发布
  • css布局,左右固定中间自适应实现
  • ES6简单总结(搭配简单的讲解和小案例)
  • extract-text-webpack-plugin用法
  • Javascript 原型链
  • java中的hashCode
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Otto开发初探——微服务依赖管理新利器
  • SAP云平台里Global Account和Sub Account的关系
  • 后端_ThinkPHP5
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何在GitHub上创建个人博客
  • 手写双向链表LinkedList的几个常用功能
  • 走向全栈之MongoDB的使用
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #pragam once 和 #ifndef 预编译头
  • #微信小程序:微信小程序常见的配置传值
  • $.ajax中的eval及dataType
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (C语言)fgets与fputs函数详解
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (安卓)跳转应用市场APP详情页的方式
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)linux下的时间函数使用
  • .bat批处理出现中文乱码的情况
  • .form文件_SSM框架文件上传篇
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET开发者必备的11款免费工具
  • ?php echo ?,?php echo Hello world!;?
  • @Conditional注解详解
  • [ C++ ] STL---仿函数与priority_queue
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [20150904]exp slow.txt
  • [AIGC] SQL中的数据添加和操作:数据类型介绍