基于exif信息进行图片方向旋转修正

在处理标注数据的时候,发现标注框不吻合经过分析发现标注软件在读取图片时,读取了图片的exif信息,并对图片进行了旋转,所以标注的坐标时旋转后的坐标。
解决方法有两种,一是旋转坐标,二是旋转图片,这里展示图片旋转的方法:

# coding:utf-8
import glob
import json
import osimport PIL.ExifTags
import PIL.Image
import PIL.ImageOps
import imageio
import numpy as npimport cv2
def update_image_files():# 图片所在的文件夹image_dir = "chinese_ocr_rec"# 过滤出jpg图片image_files = glob.glob(os.path.join(image_dir, "*.jpg"))image_files.sort()for image_file in image_files:with open(image_file, 'rb') as f:# 打开图片image = PIL.Image.open(f)# 图片旋转image = apply_exif_orientation(image)# 使用opencv读取,去除exif信息img = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)# 保存图片cv2.imwrite(image_file, img)# 此方法为标注软件里图片旋转的方法
def apply_exif_orientation(image):try:exif = image._getexif()except AttributeError:exif = Noneif exif is None:return imageexif = {PIL.ExifTags.TAGS[k]: vfor k, v in exif.items()if k in PIL.ExifTags.TAGS}orientation = exif.get('Orientation', None)if orientation == 1:# do nothingreturn imageelif orientation == 2:# left-to-right mirrorreturn PIL.ImageOps.mirror(image)elif orientation == 3:# rotate 180return image.transpose(PIL.Image.ROTATE_180)elif orientation == 4:# top-to-bottom mirrorreturn PIL.ImageOps.flip(image)elif orientation == 5:# top-to-left mirrorreturn PIL.ImageOps.mirror(image.transpose(PIL.Image.ROTATE_270))elif orientation == 6:# rotate 270return image.transpose(PIL.Image.ROTATE_270)elif orientation == 7:# top-to-right mirrorreturn PIL.ImageOps.mirror(image.transpose(PIL.Image.ROTATE_90))elif orientation == 8:# rotate 90return image.transpose(PIL.Image.ROTATE_90)else:return image

旋转后:

基于exif信息进行图片方向旋转修正相关推荐

  1. JS获取图片的EXIF信息+纠正图片方向

    前端图片处理碰到的一个离奇 bug , 关于图片的 EXIF 信息,特地记录下来 . 然后使用一下代码可以获取Orientation信息,并纠正Orientation带来的图片旋转问题 // from ...

  2. 在WebPart中上传图片到SharePoint图片库,读取Exif信息到图片的自定义属性

    SharePoint 图片库是个不错的东西,默认就有很多的视图,省了很多事,上传图片的界面其实功能也很强大,但是有时候并不是完全符合需求,有些东西你没有办法控制,所以有时候我们也在WebPart中上传 ...

  3. iOS 15 照片应用新改进:支持查看 EXIF 信息以及图片来源

    iOS15更新了许多内容,例如照片中,我们可以查看一张照片的各种信息,例如显示图像格式.用于捕获它的相机的详细信息以及拍摄位置,不过目前测试版只能看到具有文本信息的照片才有"信息" ...

  4. 使用imageIO获取和修改图片的exif信息

    看到这篇文章.喜欢的不得了-转来分享给大家! 一幅图片除了包含我们能看见的像素信息,背后还包含了拍摄时间,光圈大小,曝光等信息.UIImage类将这些细节信息都隐藏了起来,只提供我们关心的图片尺寸,图 ...

  5. java exif 语言编码_Java读取图片EXIF信息的代码

    Java读取图片EXIF信息的代码 本文实例讲述了Java读取图片EXIF信息的方法.分享给大家供大家参考.具体分析如下: 首先介绍一下什么是EXIF,EXIF是Exchangeable Image ...

  6. speedoffice(PPT)图片怎么旋转方向

    我们有时向PPT插入的图片方向不是正的,这时候就需要旋转图片?那么PPT里面图片怎么旋转呢?看看小编是怎么操作的吧. 方法1:选中图片后,我们可以看到图片边框出现旋转图标,光标放在图标上拖动鼠标即可旋 ...

  7. 【基本的办公软件有哪些】万彩办公大师教程丨图片EXIF信息修改工具

    关于万彩办公大师的图片EXIF信息修改工具 对于智能手机,数码相机拍摄的照片,图片EXIF信息修改工具能够编辑和修改图片的EXIF信息(包括时间,描述等),是各行各业工作人员,特别是摄影师用来编辑记录 ...

  8. java exif 怎么获取属性_Java如何读取图片EXIF信息

    Java如何读取图片EXIF信息 大家知道Java如何读取图片属性信息吗?下面小编为大家整理了Java读取图片EXIF信息的方法,希望能帮到大家! 首先介绍一下什么是EXIF,EXIF是Exchang ...

  9. 为什么图片会旋转,旋转角是什么

    目前从事主营业务为在线设计的一家公司,其中某个业务为用户在线设计,然后将用户创建的设计下载渲染成图片.前几天,我在工作中遇到了一个奇怪的问题.某张用苹果手机拍摄的图片在浏览器中使用时是正着的,但是当下 ...

最新文章

  1. free 内存 注意点的事
  2. 【算法竞赛学习】资金流入流出预测-挑战Baseline_时间序列规则
  3. 160-PHP 文本替换函数str_replace(一)
  4. java——springmvc——注册中央调度器
  5. matlab作业5答案,《matlab作业题答案》.doc
  6. 理解《Deblurring Text Images via L0-Regularized Intensity and Gradient Prior》
  7. java bean jsp_jsp+java bean+servlet开发的mvc简易鞋城在线商城系统
  8. Angr安装与使用之使用篇(七)
  9. mysql的sql优化工具_DBA的五款最佳SQL查询优化工具,收藏了
  10. 易优(eyoucms)CMS网站搬家教程
  11. 虚拟机 无法 ftp服务器系统,访问不到虚拟机上的ftp服务器上
  12. oracle财务官方文档,oracle财务软件简明操作.docx
  13. Algorithms 学习笔记——1.1
  14. Windows漏洞修复报告
  15. 数论概论 第三章 勾股数组与单位圆
  16. android exo解码问题,android – exoplayer-自动更改质量不起作用(hls)
  17. 举报合肥极宝网络信息科技有限公司,骗子平台
  18. GTD时间管理 | 高效能人士的工作习惯
  19. CSDN,我的良师益友
  20. VIVADO报错:[opt31-67]之MIG ip核综合失败

热门文章

  1. 极路由更新软件源的方法
  2. SSL证书、 der、 cer、 pem区别
  3. (七)《数电》——CMOS与TTL门电路
  4. RMAN下CROSSCHECK命令详解
  5. 期货止损篇2:ATR止损,高手都在悄悄用的止损利器
  6. CISP证书对个人求职有帮助吗?
  7. 科幻电影虚拟世界中的8大服务器
  8. cuda必须装在c盘吗_软件安装到C盘会影响计算机运行速度吗?一个问题引发的思考...
  9. 去除字符串中的重复字符,算法不使用额外缓冲。如abbc-abc
  10. Ps如何调出一寸或者二寸等规定尺寸的照片