我一直在尝试在我的Windows机器上构建pHash(http://phash.org/)并且没有任何运气。我是编程桌面应用程序的新手。我将通过ctypes使用带有Python的pHash库。有人可以发布建立pHash的步骤吗?
我尝试过,用Visual Studio 2008打开pHash.sln并选择Release(而不是调试)并构建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。
答案 0 :(得分:3)
除了一些直接函数外,没有从pHash.dll导出pHash函数。这可以通过DependencyWalker http://www.dependencywalker.com/进行验证。尝试在pHash.h中的函数声明前添加__declspec(dllexport)
(例如,对于ph_dct_imagehash)并重新编译。