我正在尝试通过管道将gphoto2电影捕获的输出转移到我的opencv程序
gphoto2 --capture-movie --stdin | ./myexe
我的第一次尝试就是这样做:
while(1)
{
std::stringstream ss;
ss << "/dev/stdin";
cv::Mat m = cv::imread(ss.str());
namedWindow( "LiveView", WINDOW_AUTOSIZE );
imshow( "LiveView", m );
waitKey(1);
}
但遗憾的是,在编译作品时,执行没有,我得到了
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /build/buildd/opencv-2.4.2+dfsg/modules/core/src/array.cpp, line 2482 terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.4.2+dfsg/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat
我看到类似的问here,但它对我不起作用 - 编译失败
readbytes=read(fileno(stdin),ca,BUFSIZE);
error: no matching function for call to ‘read(int, char [10240], int)’
我是c ++ / opencv的新手,所以我可能会遗漏一些包含或其他东西。 因为我是新用户,所以我不能在那里请求帮助/澄清,所以我决定提出一个新问题。
答案 0 :(得分:0)
这种管道似乎是不好的编码实践。使用libgphoto API提取图像/影片并将其与OpenCV一起使用。 它听起来比听起来容易。请参阅此博文:http://sepharads.blogspot.nl/2011/11/camera-tethered-capturing-using.html