Я пытаюсь написать простую программу обнаружения объектов на C ++, основанную на OpenCV, для использования в цепочке инструментов в стиле конвейера Unix, что означает, что считываемое изображение принимается через stdin
, а обработанное изображение выводится вstdout
.
В настоящее время я использую функцию imread
OpenCV для чтения изображения из потока stdin
, который сам по себе работает нормально, однако мне нужно каким-то образом знать формат изображения, читаемого ввыходное изображение программы может быть закодировано соответствующим образом.
Мне известно, что после считывания изображения в OpenCV Mat оно автоматически декодируется - поэтому мне нужно найти способ определить формат изображения оригинала.изображение заранее.
Пока что я мог только придумать способ обхода, который сначала считывает изображение в буфер, а затем использует магический файл из команды file
для поиска файла.введите и в дальнейшем передайте буферизованные данные в OpenCV.
Признание того, что тесты производительности не проводились, я вполне уверен, чтоЭто очень медленный способ добиться этого, как я полагаю, OpenCV выполняет нечто подобное внутри при декодировании изображения, поэтому обнаружение формата дважды должно быть медленнее, чем определение формата только один раз.
Есть ли какой-нибудь более изощренный способ достижения этой цели или же можно получить доступ к исходной кодировке изображений (предпочтительно!) через OpenCV любым способом, который я мог бы пропустить?
Заранее спасибо!