在Coral开发板上使用OpenCV的GStreamer流水线

kmynzznz  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(246)

我正在尝试通过OpenCV和GStreamer在C++中访问Coral开发板上的CSI摄像头;
这是我的管道代码,在使用gst进行测试时似乎工作正常:

gst-launch-1.0 v4l2src device = /dev/video0 ! video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! videoconvert ! video/x-raw,format=BGR ! appsink drop=1

但是当试图用OpenCV打开它时,它似乎不起作用:

#include "opencv2/opencv.hpp"
#include <iostream>

int main() {
  std::string pipline = "v4l2src device = /dev/video0 ! video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! videoconvert ! video/x-raw,format=BGR ! appsink drop=1";

  cv::VideoCapture capture(pipline, cv::CAP_GSTRAMER);
  if (!_capture.isOpened()) {
    std::cout << "Could not open Camera" << std::endl;
  }
  return 0;
}

另外,通过opencv是否有更详细的错误信息?当运行gst-launch-1.0时,它会非常明确地告诉我它不喜欢我的管道字符串。但在opencv中,它似乎只是告诉我它不工作。

68bkxrlz

68bkxrlz1#

OpenCv VideoCapture有5个重载函数,它们都不包含这种类型的实现。您可以使用以下函数作为VideoCapture输入:

  • 视频文件或图像文件序列
  • 捕获设备索引
  • IP视频流链路

正如我在您的命令中看到的,您的CSI摄像机位于device = /dev/video0上,因此您可以简单地使用以下行调用它:

cv::VideoCapture capture(0, cv::CAP_GSTREAMER);

相关问题