我正在尝试通过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中,它似乎只是告诉我它不工作。
1条答案
按热度按时间68bkxrlz1#
OpenCv
VideoCapture
有5个重载函数,它们都不包含这种类型的实现。您可以使用以下函数作为VideoCapture
输入:正如我在您的命令中看到的,您的CSI摄像机位于
device = /dev/video0
上,因此您可以简单地使用以下行调用它: