OpenCV returns 调用 open 时没有错误,但 gstreamer 会

OpenCV returns no error when open is called, but gstreamer does

我在使用 GStreamer 打开相机时遇到问题,但相机未连接,我没有从 OpenCV 返回错误代码。 GStreamer return 控制台出现错误。当我用 .isOpend() 检查相机是否打开时, return 值为 true。连接相机后,它可以正常工作。

   std::string pipeline = "nvarguscamerasrc sensor_id=0 ! video/x-raw(memory:NVMM), width=(int)3264, height=(int)2464, format=(string)NV12, framerate=(fraction)21/1 ! nvvidconv flip-method=2 ! video/x-raw, width=(int)3264, height=(int)2464, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink"

   cap_device_.open(pipeline, cv::CAP_GSTREAMER);
   bool err = cap_device_.isOpened();
   if (!err) {
     printf("Not possible to open camera");
     return EXIT_FAILURE;
   }

控制台中的 GStreamer 错误代码为:

(Argus) Error Timeout:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 219)
(Argus) Error Timeout: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:720 Failed to create CameraProvider
[ WARN:0] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap_gstreamer.cpp (933) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1

如果我理解正确,.isOpend() 应该 return false。如果没有,如何检查管道是否初始化正确?

我的系统在带有 MIPI-CSI 摄像头的 Nvidia Jetson Nano 上运行 Ubuntu 18.04。 GStreamer 版本 1.14.5,OpenCV 版本 4.1.1

这可能只是因为打字错误。 nvarguscamerasrc 没有 属性 sensor_id 但有传感器 ID。修复后它应该可以工作。

在不工作的情况下,cap.read() 应该 return false。