如何通过SQL编程访问Windows Live照片库中的面部识别缓存?

8
我不是在谈论嵌入在JPEG的XMP数据包中的“人物标签”。我谈论的是用于识别新面孔的面部数据库。
我想在我的程序中添加使用WLPG已经训练好的数据库来识别面孔的选项。我成功地使用API(一种类型库dll)来检测面孔,但要识别它们需要一个“示例高速缓存”对象,在同一API中不可用。我可以创建自己的对象,但我希望使用已经存在的对象,以避免用户重复训练。
我知道数据库位于“%localappdata%\Local\Microsoft\Windows Live Photo Gallery\”并且采用SQL Server Compact Edition 3.1格式。我用Visual Studio 2010打开了数据库,但我更喜欢在不直接访问数据库的情况下读取它,我没有看到导出这个功能的DLL。
顺便说一下,我正在使用Delphi 2010。
有什么想法吗?

你能给我们提供更多关于你是如何做到这一点的细节吗?我对为概念演示做类似的事情很感兴趣。 - Jeroen Wiert Pluimers
1个回答

1

注意:我从未写过 Delphi 代码。

由于此功能不受 Microsoft 支持,可能不会有任何明显的 API。因此,您所说的做法很可能会在新版 Windows Live 照片库发布后立即失效。

话虽如此,您最好的希望是直接连接数据库。您需要了解如何创建 SQL Server 到 Delphi 的连接,然后创建一个连接字符串来连接 Windows Live 照片库数据库。


我已经成功将数据库数据导入到我的IExemplarCache对象中,但是我在如何将信息返回给识别引擎方面遇到了问题。我会继续尝试,但我怀疑即使我让它工作,我也不会将此方法放入程序的最终版本中。 - acorderob
你能提供一下你的IExemplarCache类的详细信息吗? - Zian Choy
我设法让它在某种程度上工作了。它不再给出异常(我没有正确构造缓存项)。它可以检测到人脸,但是人员ID始终为0,这意味着无法识别。 - acorderob
好的,它正在工作!我只是没有好的测试图像。识别效果并不是很好。我使用已识别图像(在WLPG中)的副本进行了测试,它只以33%的置信度给出了正确的响应建议。 - acorderob
恭喜!听到这个消息我感到非常高兴! - Zian Choy
我写了一篇关于这个的文章 - acorderob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接