我正在编写python脚本,我需要从原始照片文件(例如.CR2)获取exif信息。

我发现PythonRawkit可以做到这一点。

withRaw(filename=image_path)asraw:printraw.metadataMetadata(aperture=-1.2095638073643314e+38,timestamp=4273602232L,shutter=-1.1962713245823862e+38,flash=True,focal_length=-1.2228562901462766e+38,height=3753,iso=-1.182978841800441e+38,make='Canon',model='EOS 5D Mark II',orientation=0,width=5634)

但是我有点困惑,如何读取这些值?例如,我期望iso值像100/200/400,但是-1.182978841800441e + 38是什么?

我的问题不是针对iso,而是针对快门,光圈,...

我查看了libraw和rawkit文档,但无法找到如何读取/转换这种值。

该文档中的这一部分不是很详细:

float iso_speed;ISO sensitivity.float shutter;Shutterspeed.

有人可以帮助我了解如何读取这些值吗?

谢谢

[更新]

正如neo所建议的,我将使用ExifRead。实际上,这是一个更好的选择,我正在编写python脚本。使用ExifRead不需要额外的C库依赖关系。

我能够打开Canon原始文件并解析Exif,但是不幸的是光圈值错误:

EXIFApertureValue(Ratio):3# My photo was taken in 2.8 (maybe a rounded value on this flag ?)

快速解答:使用Fnumber标志

EXIFFNumber(Ratio):14/514/5isinfact2.8(dothe math)

长答案(我如何找到/调试):

阅读此实用链接,了解佳能RAW.CR2文件中存储的内容,方式和原因(http://lclevy.free.fr/cr2/),我决定对自己进行解码并知道发生了什么。

此链接发送给我,以解码原始文件cr2_poster.pdf。从那以后,我认为最好的值似乎是在我的特定于Canon的MakerNote部分中的FNumber值。(所有值描述在此处canon_tags)

TagId:3(Infact0x0003that you write0x3)Name:FNumber

我用Hexa编辑器(hexedit)打开了文件,然后……我完全迷失了。

关键事项:

偏移量是文件中包含您的值的地址。

读取:C8 05应读取文件中的内容05C8。偏移量示例,地址为0x5C8

有了这个发现,MakeNote部分就很容易了。

快速方法是直接搜索包含MakerNote部分地址的0x927c MarkerNote(在文件中7C 92)标记。如果找不到,请遍历该IFD部分以找到EXIF subsection。然后在该小节中,您将找到MakerNote部分

TagTypeCountValue7C920700B8 A0000084030000

偏移:84 03 00 00->00 00 03 84(0x384地址)

转到该地址,然后在MakerNote部分中搜索FNumber 0x3

TagTypeCountValue0300030004000000C8050000

转到偏移量0x5C8以找到我们的值(计数4 x类型3 ushort,16位)

0x0x5C8:0000000000000000

而且...失败,实际上我的教规没有填写此部分。

进行相同的过程以找到EXIF子节,并标记“0x829d Exif.Image.FNumber类型5 Rational”标记Rational类型由64位(分子和分母ulong组成)组成Rational_data_type

TagTypeCountValue9D8205000100000034030000

然后读取0x334偏移量

1C0000000A000000

正如我们在十六进制中所读到的:0x1C/0XA以十进制形式,请进行数学运算:28/10=14/5=2.8

验证我在ExifRead中具有此值

EXIF.py100EOS5D/IMG_8813.CR2-vv|grep-i14/5EXIFFNumber(Ratio):14/5

瞧!

我正在寻找2.8浮点数,并且此值以小数格式存储。因此,库不进行数学运算,而只是简化分数。

这就是为什么我们拥有14/5而不是2.8预期的原因。

解决方案

我建议您使用专注于EXIF读取的库。libraw / rawkit中可用的东西实际上只是一个不错的补充。我可以推荐ExifRead库。它是纯Python,而且该死的也很快。它使您更好地理解价值观。

python读取raw数据文件_Python rawkit如何从RAW文件读取元数据值?相关推荐

  1. Python 批量将raw数据或图片一一存成.npy文件

    深度学习神经网络训练读入的都是numpy数组,一般直接读取图片在做预处理送入模型训练时很浪费时间的,我们可以提前将数据转成.npy格式的文件,并且数据的预处理也可以在这里完成.那么,将预处理好的数据直 ...

  2. python读取数据库数据、并保存为docx_Python从数据库读取大量数据批量写入文件的方法...

    Python从数据库读取大量数据批量写入文件的方法 使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存. 下面是代码作用是将数据 ...

  3. c++读取.dat文件_Python之旅,Day5 - 文件操作

    大家应该听说过一句话:"好记性不如烂笔头". 不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,电 ...

  4. python软件在下载库文件_python – 并行下载多个文件的库或工具

    我正在寻找一个python库或一个命令行工具来并行下载多个文件.我目前的解决方案是顺序下载文件缓慢.我知道你可以很容易地在python中编写一个半条线程的线程解决方案,但是在使用线程时总是遇到麻烦的问 ...

  5. python做mysql数据迁移_Python中MySQL数据迁移到MongoDB脚本的方法

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库 ...

  6. python批量解压文件_python 批量解压压缩文件的实例代码

    下面给大家介绍python 批量解压压缩文件的实例代码,代码如下所述: #/usr/bin/python#coding=utf-8import os,sys import zipfile open_p ...

  7. r语言读取excel数据_R语言 | 更快的表格文件读取方法!

    友情提示:蓝色下划线字体为引文,请保持警惕! 使用R语言读取 Affymetrix Human Exon 1.0 ST Array 芯片平台探针注释文件: https://www.affymetrix ...

  8. python分析股票数据 彤_Python数据分析:股票数据

    最近股市比较火,我7月初上车了,现在已经下了.中间虽然吃了点肉,但下车的时候都亏进去了,最后连点汤都没喝着. 这篇文章我们就用它python 对股票数据做个简单的分析.数据集是从1999年到2016年 ...

  9. python解压7z文件_Python调用7zip命令实现文件批量解压

    Python调用7zip命令实现文件批量解压 1.输入压缩文件所在的路径 2.可以在代码中修改解压到的文件路径和所需要解压的类型,列入,解压文件夹下面所有的mp4格式的文件 3.cmd 指的就是Pyt ...

最新文章

  1. 解析xml的问题未解决
  2. asp下载防盗链代码
  3. 请你说明ConcurrentHashMap有什么优势以及1.7和1.8区别?
  4. IBC+Palette 实现屏幕内容编码优化
  5. @scheduled只执行一次_SpringBoot第四篇:定时任务@Scheduled
  6. html返回顶部_Jquery实现一键返回顶部
  7. 学python分析双色球_我通过使用Python分析了80多个工作拒绝而学到的东西
  8. Zephyr_overlay文件讲解
  9. go语言中常用的关于文件目录的操作
  10. 功能详细设计文档模板
  11. php 中文获取拼音,php获取中文的拼音代码_php
  12. 【未完成】7-12 任务调度的合理性 (25 分)
  13. Quartz 任务调度全攻略【转】
  14. SSM(spring.struts2.mybatis)注解式开发步骤
  15. 我和极客时间合作了一门产品创新课
  16. PHp勾股定理,【中考备考】有关数学必考奥数题之勾股定理练习题 初二数学
  17. 【小米机试】厨艺大赛奖金
  18. 趣头条自媒体怎么创造爆文内容、趣头条五个爆文技巧教
  19. jsTree 组件官方文档学习
  20. Python 3 教程(二)

热门文章

  1. origin导出图片有水印
  2. JS二进制和十六进制转换
  3. python图像处理实践——给头像加数字
  4. 您是否忘记了敏捷价值?
  5. get请求和post请求在缓存上的区别?
  6. 芜湖光华学校优选云盒子教育云盘,自建专属数据中心
  7. java单选题_java单选题
  8. 2022-04-20 Unity入门7——物理系统之碰撞检测
  9. 你看到各种各样的漂亮二维码制作都跑不出这8个原理!
  10. 2020年最新阿里、字节、腾讯、京东等一线大厂高频面试(Java岗)真题合集,面试轻松无压力