gpt4 book ai didi

sqlite - RKFace.modelId 对应的 Apple Photos 中的 facetile 是如何实现的?

转载 作者:行者123 更新时间:2023-12-03 17:18:36 25 4
gpt4 key购买 nike

我已经用了几个周末的时间来研究 Apple Photos macOS 应用程序,但我被卡住了。我希望 StackOverflow 的聪明人能够解决这个问题。

我不知道的是:

  1. 如何确定新的十六进制目录以及它们如何对应于 RK.modelId。也许是 RKFace.ModelId 的 16 mod,或者 RKFace.ModelId 的 mod 256?
  2. 一段时间后,facetile 十六进制值不再对应于 RKFace.ModelId。例如 RKFace.modelId 61047 应该是 facetile_ee77.jpeg。然而,正确的 facetile 是 face/20/01/facetile_1209b.jpeg。十六进制值 1209b 是 dec 值 73883,我没有 RKFace.ModelId。

我知道的事情:

  1. Apple Photos 利用深度学习网络检测您导入的照片中的人脸并将其裁剪掉。它将这些检测到的人脸以裁剪后的 jpeg 格式保存到您的照片库 resources/media/face/00/00/facetile_1.jpeg 中。
  2. 将与此 facetile 对应的记录插入到 RKFace,其中 RKFace.modelId 整数是文件名尾部十六进制版本的十进制数。您可以使用 standard dec to hex converter并得出正确的值。例如: RKFace.modelId to facetile filename
  3. 每个子目录,例如“/00/00”,在开始一个新目录之前最多只能容纳 256 个 facetile。目录名也是带目录的十六进制格式。例如 3e、3f。

最佳答案

在尝试渲染照片马赛克时,我也偶然发现了这个问题......

然后我很幸运地同时找到了master图像和对应的facetile,允许我四处搜索,搜索文件名中嵌入的数字的十进制和十六进制等价物。

这是我想到的(假设您正在搜索名为 NAME 的人):

SELECT 
printf('%04x', mr.modelId) AS tileId
FROM
RKModelResource mr, RKFace f, RKPerson p
WHERE
f.modelId = mr.attachedModelId
AND f.personId = p.modelId
AND p.displayName = NAME

select 以十六进制打印出所有RKModelResource.modelIds,用于命名您正在搜索的相应facetiles。现在所需要的只是通往 facetile 的完整路径。

因此,一个完整的 bash 脚本可以复制一个人的所有这些面孔(到当前目录中的本地文件夹 out):

#!/bin/bash
set -eEu

PHOTOS_PATH=$HOME/Pictures/Photos\ Library.photoslibrary
DB_PATH=$PHOTOS_PATH/database/photos.db

echo $NAME
mkdir -p out/$NAME

TILES=( $(sqlite3 "$DB_PATH" "SELECT printf('%04x', mr.modelId) AS tileId FROM RKModelResource mr, RKFace f, RKPerson p WHERE f.modelId = mr.attachedModelId AND f.personId = p.modelId AND p.displayName='"$NAME"'") )
for TILE in ${TILES[@]}; do
FOLDER=${TILE:0:2}
SOURCE="$PHOTOS_PATH/resources/media/face/$FOLDER/00/facetile_$TILE.jpeg"
[[ -e "$SOURCE" ]] || continue
TARGET=out/$NAME/$TILE.jpeg
[[ -e "$TARGET" ]] && continue
cp "$SOURCE" "$TARGET" || :
done

关于sqlite - RKFace.modelId 对应的 Apple Photos 中的 facetile 是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53731406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com