【发布时间】:2015-04-19 15:27:15
【问题描述】:
我正在使用 C++ 进行图像处理项目。要显示图像,我想使用默认的 ubuntu 图像查看器 (eog)。我的 Image16 类中有可以读写 PPM 文件的函数。我知道这些工作,因为我可以将它们写入硬盘,然后用 eog 打开它们。但是我不想将图像写入我的硬盘,因为我有一个 SSD,每个图像大约 100 Mb。我想直接将图像数据通过管道传输到 eog。然而,这会产生一个错误,我不知道为什么。
ifstream in("/home/chase/Desktop/moon.ppm");
Image16 img = Image16::read_ppm(in);
in.close();
FILE* f = popen("eog /dev/stdin", "w");
img.write_ppm(f, 255);
pclose(f);
我设法让它与 imagemagick display 和 feh 一起工作,但我真的不喜欢那些程序。如果可能,我想使用 eog。
【问题讨论】:
-
请不要张贴文字图片,尤其是代码!而是复制粘贴实际代码。
-
如果你用
mkfifo()做一个管道,在后台把图片发送到管道,然后告诉eog从管道读取呢? -
mkfifo 是写入磁盘还是存储在内存中?
-
两者都不是。它将一个程序的输出传递给另一个程序的输入。就像
programA | programB,只是中间的那位有名字。 -
那也没用。
标签: c++ linux ubuntu image-processing pipe