当前位置: 首页 > 知识库问答 >
问题:

OpenCV:无法从管道读取图像

孔阎宝
2023-03-14

我正在尝试从管道(如stdin,named pipe等)加载图像。

这是我的示例代码:

#包括“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。

真正的文件和管道有什么区别?

共有1个答案

屠坚壁
2023-03-14

函数imread是从块设备读取图像,而不是从流设备读取图像。本地文件是块的,管道是流的,这就是为什么imread函数不能从管道、套接字等读取图像的原因。

 类似资料:
  • 我有一个简单的Jenkinsfile,我想在其中从工作区加载一些数据。我正在使用管道插件来利用存储库中的Jenkinsfile。构建被外包给匹配的Jenkins代理。当我尝试使用“readFile”时,我收到以下消息: Java语言io。FileNotFoundException:/path/to/jenkins/workspace/XXXXX/project/data。json(无此类文件或目录

  • 包的类提供读取和写入图像的方法。使用OpenCV,可以读取图像并将其存储在矩阵中(如果需要,可在矩阵上执行转换)。之后可以将处理后的矩阵写入文件。 类的方法用于使用OpenCV读取图像。 以下是此方法的语法。 它接受一个参数(文件名),一个字符串类型的变量,表示要读取的文件的路径。 下面给出了使用OpenCV库读取Java图像的步骤。 第1步:加载OpenCV本机库 使用方法加载OpenCV本机库

  • 以下程序演示了如何将彩色图像作为BGR类型图像读取并使用JavaFX窗口显示。 在这里通过将标志传递给方法以及保存彩色图像路径的String来读取图像。 假定以下是上述程序中指定的输入图像。 读取图片转为BGR如下所示 -

  • 问题内容: 我试图读取就是BEING柏油,流媒体,以标准输入存档,但我不知怎么读 远远 在管道的数据超过焦油发送。 我这样运行我的命令: 源代码是这样的: 对于100MB的涂油文件夹,我将获得1468个4MB的块(即6.15GB)!此外,数组的大小似乎无关紧要:如果将块大小设置为40MB,我仍然会获得约1400个40MB数据块,这根本没有意义。 要使用Go正确读取数据,我需要做些什么吗? 问题答案

  • 以下程序演示如何将彩色图像读取为灰度并使用JavaFX窗口显示。 在这里通过将标志与带有彩色图像路径的字符串一起传递来读取图像。 假定以下是上述程序中指定的输入图像。那么输出结果应该为一个灰色的图片。

  • 问题内容: 我正在尝试直接读取黑白图像。 我最近将OpenCv版本更新为3.0.0-dev,以前使用的代码不再起作用。 适用于2.4,但不能用于新版本,因为没有field 。 有什么建议? 注意:我知道可以使用,但是我不喜欢在代码中使用未命名的常量。谢谢! 问题答案: 该标志已重命名为。一般来说,标志现在以与它们所引用的功能有关的方式为名称加上前缀。(例如,标记以,标记以等等开头)