Skip to content

Python bindings for the pHash (perceptual hashing) library.

License

Notifications You must be signed in to change notification settings

dries007/pHashPy

Repository files navigation

pHashPy

Python bindings for the pHash (perceptual hashing) library.

Copyright (c) Dries007 2020.
Licensed under GPLv3 (or later), as is pHash itself.

The project uses cppyy to create a small wrapper around pHash functions.

Features

Working:

  • Video hashing
  • Image hashing (dct & mh)

Missing:

  • Audio
  • Text

Usage

As a Command Line Tool

You can use the tool as a command line utility to generate a list of hashes from a list of files.

Run python -m pHashPy --help for more info.

As a Library

Import functions from the package's __init__, this will automatically load the required library files. If you import the functions from the individual py files, you must call helper.init yourself.

Background Info

For more info on pHash:

Testing build manually

Using CentOS 7 (with docker container quay.io/pypa/manylinux2014_x86_64):

cd

yum install -y cmake3 libpng-devel libjpeg-turbo-devel libsamplerate-devel libsndfile-devel libtiff-devel libvdpau-devel libvorbis-devel
yum install -y epel-release

rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install -y ffmpeg-devel

git clone https://github.com/dries007/pHashPy.git
cd pHashPy
git submodule init
git submodule update

cd pHash

echo "include_directories(/usr/include/ffmpeg)" >> CMakeLists.txt
sed -i s/SHARED/STATIC/g CMakeLists.txt

mkdir build
cd build
cmake3 .. -DCMAKE_BUILD_TYPE=Release -DWITH_VIDEO_HASH=1 -DWITH_AUDIO_HASH=1
make -j