1

私は自分のWindowsマシンでpHash(http://phash.org/)を構築しようとしてきましたが、運がありませんでした。デスクトップアプリケーションのプログラミングは初めてです。ctypesを介してPythonでpHashライブラリを使用します。誰かがpHashの構築に関連する手順を投稿できますか?

私が試したのは、Visual Studio 2008でpHash.slnを開き、(デバッグではなく)リリースを選択してpHashを構築することでした。ファイルが見つからなかったため、どこにビルドされているのかわかりませんでした。Visual Studioのプロジェクトフォルダーを調べてみましたが、そこになかったので、pHash / release / pHash.dllにビルドされていると思いましたが、そのdllをctypes.cdllでロードすると、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

初めてですので、ご容赦ください。ありがとう。

編集:私はPython2.7を実行しています。

4

1 に答える 1

3

一部の異なる関数を除いて、pHash関数はpHash.dllからエクスポートされません。これは、DependencyWalkerhttp://www.dependencywalker.com/で確認できます。pHash.hの関数宣言の前に追加__declspec(dllexport)してみて(たとえば、ph_dct_imagehashの場合)、再コンパイルしてください。

于 2012-04-01T17:43:57.693 に答える