Есть ли какой-то способ использования функции imread OpenCV для чтения из std::in?
imread
std::in
Mat imread( const string& filename, int flags=1 );
Функция принимает только имя файла, но есть ли какое-то "магическое" значение для стандартного ввода?
OpenCV предоставляет функции imdecode, которые работают с буферами вместо имени файла. Сначала вам нужно прочитать stdin в буфер.
http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html
Если вы хотите очень быстрый взлом, вот что работает в Linux:
#include <unistd.h> /* snip */ std::stringstream ss; ss << "/proc/" << getpid() << "/fd/0"; cv::Mat m = cv::imread(ss.str());
Нет,
Но если вы действительно этого хотите, вы можете направить stdin в именованный канал (mkfifo) и прочитать из него.