Python数据获取实现图片数据提取
作者:温欣' 发布时间:2022-08-15 03:37:30
标签:Python,图片,数据,提取
比如我随便从手机上传一张图片到我的电脑里,通过python可以获取这张照片的所有信息。如果是数码相机拍摄的照片,我们在属性里可以找到照片拍摄的时间,拍摄的经纬度,海拔高度。
那么这些信息有什么作用呢?
有很多功能…比如用户画像,客户信息标签设定等等,用户喜欢拍摄照片的季节,时间点,所使用的相机的参数指标可以反应出一个人的金钱状况,对于其拍摄的内容,我们可以通过AI的方式对照片的内容信息进行提取,从而判断一个人的兴趣爱好。
一、利用exifread提取图片的EXIF信息
exifread
介绍:
EXIF
信息,是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。EXIF可以附加于JPEG
、TIFF
、RIFF
等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件的版本信息。
首先要安装ExifRead
:
pip3 install ExifRead
pic=r'D:\S072003Python\input\test\test.jpg'
import exifread
f = open(pic, 'rb')
tags = exifread.process_file(f)
print(tags) #内有相机型号,拍摄时间,经纬度等
tags
print(tags)和tags获取数据的格式不同。
tags['Image ImageWidth']
tags['Image ImageLength']
tags['Image ExifOffset']
tags['Image Orientation']
tags['Image DateTime']
tags['EXIF WhiteBalance']
tags['EXIF ISOSpeedRatings']
tags['EXIF FocalLength']
tags['EXIF Flash']
tags['EXIF LightSource']
exifcolumns=['Image ImageWidth','Image ImageLength','Image ExifOffset','Image Orientation','Image DateTime','EXIF WhiteBalance','EXIF ISOSpeedRatings','EXIF FocalLength','EXIF Flash','EXIF LightSource'] # 把要提取的数据都封装在列表当中
for i in range(len(exifcolumns)):
print(tags[exifcolumns[i]]) # 使用循环拿到所有的数据
二、循环遍历图片信息
任务:一次性获得以下图片的"Image ImageWidth"
信息。写一个循环即可:
import exifread
import os
import pandas as pd
import glob
pic_list=glob.glob(r'C:\Users\Lenovo\Pictures\Saved Pictures\*.jpg') # 如果是png,jpeg,bmp等数据格式,如何设置?
for i in pic_list:
fr=open(i,'rb')
tags=exifread.process_file(fr)
if "Image ImageWidth" in tags: # 条件判断,因为并不是所有的照片都有"Image ImageWidth"
print(tags["Image ImageWidth"])
# 经纬度获取
import exifread
import os
import pandas as pd
import glob
pic_list=glob.glob(r'C:\Users\Lenovo\Pictures\Saved Pictures\*.jpg')
latlonlists=[]
for i in pic_list:
fr=open(i,'rb')
tags=exifread.process_file(fr)
if "GPS GPSLatitude" in tags: # 条件判断,因为并不是所有的照片都有"Image ImageWidth"
# 维度转换
lat_ref=tags["GPS GPSLatitudeRef"]
lat=tags["GPS GPSLatitude"].printable[1:-1].replace(" ","").replace("/",",").split(",")
lat=float(lat[0])+float(lat[1])/60+float(lat[2])/3600
if lat_ref in ["N"]: # 表示是南半球的数据
lat=lat*(-1)
# 经度转换
lon_ref=tags["GPS GPSLongitudeRef"]
lon=tags["GPS GPSLongitude"].printable[1:-1].replace("","").replace("/",",").split(",")
lon=float(lon[0])+float(lon[1])/60+float(lon[2])/3600
if lon_ref in ["E"]: # 表示是西半球的数据
lon=lon*(-1)
print("维度:",lat,"经度:",lon)
latlonlist=[lat,lon]
latlonlists.append(latlonlist)
来源:https://blog.csdn.net/wxfighting/article/details/123139006


猜你喜欢
- 批量处理文件时,常需要先遍历某个路径提取特定条件的文件名。这篇写一个暴力遍历但很简洁的方法,真的非常简洁但是非常暴力。例子目标是:获得存放遥
- 正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。文章转载自:http://www.phpch
- 本文实例讲述了Python数据类型之Tuple元组。分享给大家供大家参考,具体如下:tuple元组1.概述本质上是一种有序的集合,和列表非常
- 这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 这段时间在做项目的过程中,遇到一个模块,数据之间的联系很复杂,在建表的时候就很纠结,到底该怎么去处理这些复杂的数据呢,是单表查询,然后在业务
- 0、前言在以前读书的时候,实验室里面要求每天都要关电脑,有时候出去玩得晚了,懒得回实验室关电脑,又没有同学帮忙。于是就想,能不能通过什么手段
- python 连接数据库操作, 方法如下:在本机的mysql 数据库中有一个名为yao的库,其中有一个名为user的表,表中的内容如图下面,
- 在工作中遇到过 个问题执行一条代码时间过长 而且还不报错,卡死在那。还要继续执行下面代码,如何操作。下面是个简单的实例pip安装 第三方ev
- 仿豆瓣分页原型(Javascript版)写了个分页的样式。自我感觉,这样的分页前后兼顾,对于用户的体验是蛮好使的Javascript分页代码
- 本文实例讲述了Python连接MongoDB数据库的方法。分享给大家供大家参考,具体如下:Python使用pymongo操作MongoDB数
- Pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量、接口、线程以及COM
- 使用replace做多字符替换import rewords = ''' 钟声响起归家的讯号
- XML文档对象模型(DOM)是什么?可扩展标记语言XML的基础是 DOM。XML 文档具有一个称为节点的信息单元层次结构;DOM 是描述那些
- 本文实例讲述了Pytorch实现的手写数字mnist识别功能。分享给大家供大家参考,具体如下:import torchimport torc
- 列表A是一个通过扩张对象浏览器(object explorer)中可编程性节点而建立的实例,选择存储过程,然后右击并选择新的存储过程。 许多
- 最近正好在寻求一种Python的数据库ORM (Object Relational Mapper),SQLAlchemy (项目主页)这个开
- 显示图像: Image img = Image.From
- 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串、列表、元组…)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢?
- 一、pip简介Pip 是安装python包的工具,提供了安装包,列出已经安装的包,升级包以及卸载包的功能。Pip 是对easy_instal
- 前情提要:公司运营的一个商城系统,忽然发现订单提现功能有问题,有大量的商户体现金额和订单金额不一致。于是产生了需求,需要把提现表和供应商表作