我正在尝试从标准输入,命名管道等管道中加载图像。
这是我的示例代码:
#include“ opencv2 / opencv.hpp”
使用命名空间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。
真实文件和管道有什么区别?
该功能imread
是从块设备而不是流设备读取图像。本地文件是块,管道是流,这就是为什么该函数imread
无法从管道,套接字等读取图像的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句