OpenCV:无法从管道读取图像

时间:2014-10-18 01:47:59

标签: c++ macos opencv

我试图从管道加载图像,例如stdin,命名管道等。

这是我的示例代码:

  

#include" opencv2 / opencv.hpp"

     

使用namespace cv;

     

int main(int argc,char ** argv){

   Mat img;
   if(argc > 1) img = imread(argv[1]);
   else img = imread("/dev/stdin");
   printf("rows = %d, cols = %d\n", img.rows, img.cols);
   imshow("original", img);
   while (waitKey(1) != 'q');
   return 0;
     

}

./a.out image.jpg

会奏效,但

./a.out < image.jpg

mkfifo img.pipe
./a.out img.pipe
cat image.jpg > img.pipe

没有工作,Mat img的行和列都是0。

真实文件和管道之间的区别是什么?

1 个答案:

答案 0 :(得分:0)

函数imread用于从块设备读取图像,而不是流设备。本地文件是块,而管道是流,这就是函数imread无法从管道,套接字等读取图像的原因。