2014-10-18 17 views
2

我試圖從管道加載圖像,如標準輸入,命名管道等OpenCV的:無法從管

這是我的示例代碼讀取圖像:

的#include「opencv2 /opencv.hpp「

using namespace cv;

INT主(INT的argc,焦炭** 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 

將不起作用,墊img的行和列是0.

真正的文件和管道有什麼區別?

回答

0

功能imread是從塊設備讀取圖像,而不是流設備。本地文件是塊,管道是流,這就是爲什麼功能imread無法從管道,套接字等讀取圖像。

+0

謝謝!那麼,這意味着'imread'使用了一些功能,如隨機訪問文件,這些功能支持塊設備,但不支持流設備? – wing 2014-10-18 05:07:56

+0

@wing就是這樣。 – 2014-10-18 09:58:34