c++ - 这些 PGM 文件是如何编码的?
问题描述
我使用 MATLAB(和 OpenCV)将灰度图像导出为 PGM,并将该文件作为输出。
im = imread(src);
im = rgb2gray(im);
imwrite(im, dst);
根据PGM 规范,标题包含图像的“幻数”、宽度、高度和最大值。
但在标题下方,应该有一个以明文形式编写的灰度强度值矩阵。但是正如您在粘贴的文件中看到的那样,我只是得到了一些垃圾(尽管它是一个完全有效的、可查看的图像)
我希望能够读取 PGM 文件并使用 C/C++ 程序将单个强度值作为整数访问,但我不知道如何解释此输出,因为它不符合规范。也许文本编码不同?
感谢您的任何帮助。
解决方案
你误读了规范。
每个灰度值用 1 或 2 个字节以纯二进制形式表示。如果 Maxval 小于 256,则为 1 个字节。否则,它是 2 个字节。最重要的字节是第一个。
所以每个像素是一个或两个字节(取决于 Maxval)并且是二进制的,而不是 ASCII。
推荐阅读
- spring - Spring Cloud Kubernetes - 启用配置重新加载时 Spring Boot 无法启动
- c# - 具有 Unity 和 Firebase 数据库的字典数组 - 从键中获取值
- powershell - 是否可以在 Powershell 多行命令中使用注释?
- php - 订阅私人频道时的 Pusher/Laravel 回显错误:订阅频道的身份验证值无效:格式应为“密钥:签名”
- graphql - 如何在前端代码中使用 GraphQL 枚举(例如在
- android - 如何在 doInBackground 之后更新 recyclerView 项目
- javascript - 对象值按 umulate 顺序排序
- python - 根据python中其他列表的值获取最大子列表
- node.js - 如何修复 args 连接在一起?
- java - 插入自定义对象属性