python - 在 Windows 上构建 pHash 库

标签 python c phash

我一直在尝试在我的 Windows 机器上构建 pHash(http://phash.org/),但一直没有成功。我是桌面应用程序编程的新手。我将通过 ctypes 将 pHash 库与 Python 一起使用。有人可以发布构建 pHash 所涉及的步骤吗?

我尝试的是使用 Visual Studio 2008 打开 pHash.sln 并选择发布(而不是调试)并构建 pHash。我不确定它在哪里构建,因为我找不到该文件。我试着查看 Visual Studio 的项目文件夹,但它不在那里,所以我假设它是构建到 pHash/release/pHash.dll,但是当我用 ctypes.cdll 加载那个 dll 时,没有 pHash 文档中列出的函数(http ://phash.org/docs/howto.html)似乎可以访问,例如ph_dct_imagehash(), ph_dct_videohash.

这是我的代码示例:

import ctypes
import inspect

PHASHPATH = "C:\Users\me\Downloads\phash\release\pHash.dll"
phash_dll = ctypes.CDLL(PHASHPATH)
phash_dll['ph_dct_imagehash']

我得到的响应是:

Traceback (most recent call last):
  File "C:\Users\me\workspace\project\src\opencv.py", line 12, in <module>
    phash_dll['ph_dct_imagehash']
  File "C:\Program Files (x86)\Python27\lib\ctypes\__init__.py", line 371, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'ph_dct_imagehash' not found

我是新手,所以请多多包涵。谢谢。

编辑: 我正在运行 Python 2.7。

最佳答案

除了一些直接函数外,没有 pHash 函数从 pHash.dll 导出。可以使用 DependencyWalker http://www.dependencywalker.com/ 进行验证.尝试在 pHash.h 中的函数声明前添加 __declspec(dllexport)(例如,对于 ph_dct_imagehash)并重新编译。

关于python - 在 Windows 上构建 pHash 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9962147/

相关文章:

计算条件均值和方差的Python方法?

python - 根据重复值合并嵌套列表项

无法让 C 中的 while 函数工作

image - 在 Elasticsearch 中通过 pHash 距离搜索相似图像

java - 检测有些不同的图像 - 是否有任何用于感知哈希和差异哈希的 java 实现?

c++ - Qt5 - 链接 pHash 库 "undefined reference"

python - python 在 gdb 调试器中做了什么?

Python pyautogui Windows 10 控制转移结束组合失败

c - IAR Pragma data_alignment 不工作

c++ - 指令级并行探索