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
0
投稿
猜你喜欢
- 本文实例讲述了PHP实现微信公众号支付功能。分享给大家供大家参考,具体如下: 直言无讳,我就是一个初涉微信
- 对于DataFrame的修改操作其实有很多,不单单是某个部分的值的修改,还有一些索引的修改、列名的修改,类型修改等等。我们仅选取部分进行介绍
- Python可以使用open函数来实现文件的打开,关闭,读写操作;Python3中的open函数定义为:open(file, mode=
- 1.问题背景Python之所以强大,不仅是因为该语言本身的特点,也是因为它拥有众多无所不能的第三方库。强大的软件库允许开发者专注于业务,避免
- 使用Windows的wmic命令,获取可执行文件的运行状况、文件路径、PID,如果可执行文件挂掉,就重启并邮件告警
- SQL语句优化的原则:◆1、使用索引来更快地遍历表缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存
- 本文实例讲述了python从任意长度的可迭代对象中分解元素操作。分享给大家供大家参考,具体如下:从某个可迭代对象中分解出N个元素,但是可迭代
- 首先到官网下载python2.7.3版本,编译安装$wget http://www.python.org/ftp/python/2.7.3/
- 网上关于PyQt5的教程很少,特别是界面跳转这一块儿,自己研究了半天,下来和大家分享一下一、首先是主界面# -*- coding: utf-
- /* 小弟刚刚接触ORACLE存储过程,有一个问题向各位同行求教,小弟写了一个存储过程,其目的是接收一个参数作为表名,然后查询该表中的全部记
- 非常好的边框样式设置工具,使用该工具您可以很方便的为DIV设置简单的边框样式,如果放在DW中会更好。会制作DW插件的高手,请帮忙制作成DW插
- 问题:Python2获取包含中文的文件名是如果不转码会出现乱码。这里假设要测试的文件夹名为test,文件夹下有5个文件名包含中文的文件分别为
- URL重定向行为路由的尾部加不加斜杠不一样的,比如:from flask import Flaskapp = Flask(__name__)
- 方法一:f = open("foo.txt") &
- 强转int类型会直接对浮点数的小数部分进行截断(无论是正还是负)。还有一种方法是math.ceil和math.floor。无论是正数还是负数
- 微信跳一跳自动代码,具体内容如下那个跳一跳python“ * ”,有几个python文件,其中有一个是得到截图,然后鼠标在图片上点击两次,py
- 目录一个不那么方便的解决方案:实战演练网站在线转换Postman今天介绍个神奇的网站!堪称爬虫偷懒的神器!我们在写爬虫,构建网络请求的时候,
- 这几天刚刚做了这个东西,有网友问到,所以分享一下。ie6、firefox2 通过,麻烦有ie7的网友测试一下,由于有其他代码,剖析出来麻烦,
- 前言:本文为 HITwh 网络空间安全专业网络空间安全设计与实践 I 的选题之一,主要实现了远程监控局域网内的主机桌面与网络情况、简单键鼠控
- Python 是一种美丽的语言,它简单易用却非常强大。但你真的会用 Python 的所有功能吗?任何编程语言的高级特征通常都是通过大量的使用