Python数据获取实现图片数据提取
作者:温欣' 时间:2022-08-15 03:37:30
比如我随便从手机上传一张图片到我的电脑里,通过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
标签:Python,图片,数据,提取
0
投稿
猜你喜欢
Yahoo! BrowserPlus 介绍
2008-06-01 16:38:00
Python实现端口检测的方法
2022-02-01 21:21:02
Python3如何在服务器打印资产信息
2023-11-15 08:03:45
浅谈Golang内存逃逸
2023-08-27 07:51:55
JS代码混淆加密工具
2008-05-25 13:49:00
PHP join()函数用法与实例讲解
2023-06-02 00:39:19
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2024-04-30 10:35:03
python实现简单的超市商品销售管理系统
2021-08-24 00:07:32
js 模拟实现类似c#下的hashtable的简单功能代码
2024-04-19 09:44:51
Perl中的文件读写学习笔记
2022-07-10 09:13:55
asp如何从数据库中调出个人档案?
2009-11-15 20:02:00
python列表的常用操作方法小结
2023-06-21 16:14:34
Django forms表单 select下拉框的传值实例
2023-04-21 02:23:53
encode脚本和normal脚本混用的问题与解决方法
2024-04-22 13:02:39
详解Python_shutil模块
2023-06-24 00:32:19
Pytorch:Conv2d卷积前后尺寸详解
2021-01-18 23:36:54
完美解决python3.7 pip升级 拒绝访问问题
2023-08-10 07:45:33
mysql简单实现查询结果添加序列号的方法
2024-01-26 11:33:56
PHP的mysqli_select_db()函数讲解
2023-06-07 18:59:44
详解Python用户登录接口的方法
2021-10-09 23:26:48