【发布时间】:2017-03-18 01:55:08
【问题描述】:
Apple 的照片应用程序具有面部识别功能。我想知道是否存在 API 来访问已被应用分类的照片的相关数据。
(使用 API 标记,不确定是哪些标记。)
谢谢!
【问题讨论】:
-
在过去的 4 年里,您是否找到了答案? Photo Kit 是否允许访问面部识别部件信息?
标签: ios api ios10 apple-photos
Apple 的照片应用程序具有面部识别功能。我想知道是否存在 API 来访问已被应用分类的照片的相关数据。
(使用 API 标记,不确定是哪些标记。)
谢谢!
【问题讨论】:
标签: ios api ios10 apple-photos
Apple 发布了一个用于访问 Apple 照片的 SDK,名为 Photo Kit。在文档中,您将找到对照片应用程序和照片云的 API 访问。但是,如果您正在寻找一种 HTTP API,我认为尚未公开宣布。
如果您只需要访问照片 MacOS 应用程序上的数据,我建议您深入研究位于照片库数据库目录中的 SQLite photos.db。
/Users/[yourUserName]/Pictures/Photos Library.photoslibrary/database/photos.db
本周末我正在开展一个项目,该项目需要类似的面部数据,并将记录我的进度。这是一个示例 SQLite 查询,您可以使用它来获取所有面孔、照片和相应的人:
SELECT *, RKFace.modelId AS fId
FROM RKFace
JOIN RKMaster ON RKMaster.modelId = RKFace.imageModelId
LEFT JOIN RKFaceGroup ON RKFaceGroup.modelId = RKFace.faceGroupId
LEFT JOIN RKFaceCrop ON RKFaceCrop.faceId = RKFace.imageModelId
LEFT JOIN RKFacePrint ON RKFacePrint.faceId = RKFace.imageModelId
LEFT JOIN RKPerson ON RKPerson.modelId = RKFace.personId;
我希望这会有所帮助。 :-)
【讨论】:
不幸的是,Adrian 提到的文件 photos.db 已不再包含 2021 年的数据。但是,我发现了一个名为 /Users/[yourUserName]/Pictures/Photos Library.photoslibrary/database/Photos.sqlite 的大文件,看起来很有希望。下面是一个 SQL 查询,它将返回我自己的所有照片作为示例:
SELECT DISTINCT ZPERSON.ZFULLNAME AS FULL_NAME, ZGENERICASSET.ZFILENAME AS FILENAME, ZGENERICASSET.ZDATECREATED + 978307200 AS DATECREATED
FROM ZPERSON
INNER JOIN ZDETECTEDFACE ON ZPERSON.Z_PK=ZDETECTEDFACE.ZPERSON
INNER JOIN ZGENERICASSET ON ZDETECTEDFACE.ZASSET=ZGENERICASSET.Z_PK
WHERE ZPERSON.ZFULLNAME LIKE "Christian%"
ORDER BY ZGENERICASSET.ZDATECREATED DESC
返回的列是FULL_NAME、FILENAME 和DATECREATED。结果日期被指定为以秒为单位的 Unix 时间戳,尽管它也可能包含一个分数。例如,1618068987.64944 指的是3:36:27 pm UTC | Saturday, April 10, 2021。
作为参考,978307200 是以秒为单位的 Apple 纪元和 Unix 纪元之间的差异。我通过这个表达式在 Python 中得到它:(datetime(2001, 1, 1, 0, 0) - datetime(1970, 1, 1, 0, 0)).total_seconds()。
【讨论】: