c++ - 使用opencv的imread时如何确定图像格式/编码
问题描述
我正在尝试在基于 OpenCV 的 C++ 中编写一个简单的特征检测程序,以用于 Unix 管道式工具链,这意味着读入的图像是通过接收stdin
的,处理后的图像输出到stdout
.
目前我正在使用 OpenCV 的imread
- 函数从 -stream 中读取图像,stdin
这本身可以正常工作,但是我需要以某种方式知道正在读取的图像格式,以便可以对程序的输出图像进行相应的编码。
我知道一旦图像被读入 OpenCV Mat,它就会自动解码 - 所以我需要找到一种方法来事先确定原始图像的图像格式。
然而,到目前为止,我只能想出一种解决方法,即首先将图像读入缓冲区,然后使用file
命令中的魔法文件来探测文件类型,然后将缓冲的数据传递给 OpenCV。
诚然没有对性能进行任何测试我很确定这是实现这一目标的一种非常缓慢的方法,正如我所假设的那样,OpenCV 在图像解码时在内部做类似的事情,因此两次检测格式肯定比格式检测慢只做一次。
有没有更复杂的方法来实现这个目标,或者原始图像编码(最好!)可以通过 OpenCV 以我可能错过的任何方式本地访问?
提前致谢!
解决方案
推荐阅读
- gwt - Google Web Toolkit 不支持 ArrayBlockingQueue
- javascript - React/Typescript 中的分页
- unreal-engine4 - Daz3d Genesis 8 角色在虚幻中,如何实现衣柜技工?
- python - 脚本在 cron 中失败,但在命令行“密钥环错误”中有效
- python-sphinx - 在 Sphinx 中引用 python 类时的自定义文本
- python - 加载调度程序的状态字典后更改学习率
- html - 使用 css 编辑 h1 引导程序
- java - 在 Minecraft bukkit 插件中找不到主类
- validation - 无法在 asp.net 核心中按名称获取资源文件
- docker - 无法在 docker 桌面中删除 docker 应用程序和容器