Python数据获取——图片数据提取

简介: 比如我随便从手机上传一张图片到我的电脑里,通过python可以获取这张照片的所有信息。如果是数码相机拍摄的照片,我们在属性里可以找到照片拍摄的时间,拍摄的经纬度,海拔高度。那么这些信息有什么作用呢?

比如我随便从手机上传一张图片到我的电脑里,通过python可以获取这张照片的所有信息。如果是数码相机拍摄的照片,我们在属性里可以找到照片拍摄的时间,拍摄的经纬度,海拔高度。


那么这些信息有什么作用呢?


有很多功能…比如用户画像,客户信息标签设定等等,用户喜欢拍摄照片的季节,时间点,所使用的相机的参数指标可以反应出一个人的金钱状况,对于其拍摄的内容,我们可以通过AI的方式对照片的内容信息进行提取,从而判断一个人的兴趣爱好。

5f00d3b98b69483cbacae8f55eaa66c7.png


一、利用exifread提取图片的EXIF信息



exifread介绍:


EXIF信息,是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。EXIF可以附加于JPEGTIFFRIFF等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件的版本信息。

首先要安装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) #内有相机型号,拍摄时间,经纬度等

fa0dc845d7c643c8a8836cbda091cfc8.png

tags

80e76d32666640c599d8dde8e5a64bf7.png

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]]) # 使用循环拿到所有的数据

c39f32c5eec147babfba507f688dd1b2.png


二、循环遍历图片信息



任务:一次性获得以下图片的"Image ImageWidth"信息。写一个循环即可:

8d11f6503b584628b194a91f0ea8d42b.png

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)  


相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
305 10
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
3月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
92 3
|
3月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
154 0
|
3月前
|
数据采集 存储 分布式计算
超酷炫Python技术:交通数据的多维度分析
超酷炫Python技术:交通数据的多维度分析

热门文章

最新文章

推荐镜像

更多