成功解决NVIDIA Jetson docker环境下Opencv+Gstreamer 无法对rtsp相机拉流问题
问题:Opencv+Gstreamer 无法对rtsp相机拉流问题,但单独使用Gstreamer可以的
cv::VideoCapture cap(pipeline, cv::CAP_GSTREAMER);
解决:此处略过中间做的测试,直接说原因,程序里使用了 OpenCV 的 GStreamer 接口,但未启用 GStreamer backend。
如果 OpenCV 没编译 GStreamer 支持,
cap.isOpened() 直接返回 false ⇒ “Camera can NOT open!”
验证:
python3 -c "import cv2; print(cv2.getBuildInformation())" | grep -A3 GStreamer
若显示 GStreamer: NO,
则需要重新编译 时用 OpenCV 启用 GStreamer 支持。
或替换调用方式为直接 GStreamer API。
于是重新编译OpenCV,编译前要加上下面的库,不然还是一样的错误:
sudo apt install -y build-essential cmake git pkg-config libgtk-3-dev \libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \libopenexr-dev libtbb2 libtbb-dev libdc1394-22-dev \gstreamer1.0-tools gstreamer1.0-plugins-base \gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \gstreamer1.0-libav libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
