我试图从管道加载图像,例如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。
真实文件和管道之间的区别是什么?
答案 0 :(得分:0)
函数imread
用于从块设备读取图像,而不是流设备。本地文件是块,而管道是流,这就是函数imread
无法从管道,套接字等读取图像的原因。