基于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