【问题标题】:OpenCV: reading image from std::in?OpenCV:从 std::in 读取图像?
【发布时间】:2011-03-28 10:44:44
【问题描述】:

有没有办法使用 OpenCV 的 imread 函数从 std::in 读取数据?

Mat imread( const string& filename, int flags=1 );

函数只接受文件名,但标准输入是否有一些“神奇”值?

【问题讨论】:

    标签: c++ opencv stdin


    【解决方案1】:

    OpenCV 提供了处理缓冲区而不是文件名的 imdecode 函数。您需要先将标准输入读入缓冲区。

    http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html

    【讨论】:

      【解决方案2】:

      如果你想快速破解,这里有一些似乎可以在 Linux 上运行的东西:

      #include <unistd.h>
      
      /* snip */ 
      
      std::stringstream ss;
      ss << "/proc/" << getpid() << "/fd/0";
      
      cv::Mat m = cv::imread(ss.str());
      

      【讨论】:

      • 嗯 .. 这很 hackish。顺便提一句。使用 /dev/stdin 不是更容易吗?
      • 是的,它会更容易,我可耻地不知道那个特殊文件:)
      【解决方案3】:

      不,

      但如果你真的想要,你可以将标准输入流式传输到命名管道 (mkfifo) 并从中读取。

      【讨论】:

        猜你喜欢
        • 2021-05-15
        • 1970-01-01
        • 2013-01-21
        • 2014-12-13
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 2016-02-28
        相关资源
        最近更新 更多