ad2b6ded3b
Benchmark on i7-2600k, which has the POPCNT instruction: name old time/op new time/op delta DistanceIdentical-8 5.08ns ± 0% 1.01ns ± 1% -80.07% (p=0.008 n=5+5) DistanceDifferent-8 81.5ns ± 2% 1.0ns ± 0% -98.76% (p=0.016 n=5+4) Benchmark on Cavium Octeon, a MIPS64 platform with no dedicated instruction: name old time/op new time/op delta DistanceIdentical-2 120ns ± 6% 144ns ± 5% +19.93% (p=0.008 n=5+5) DistanceDifferent-2 656ns ± 4% 144ns ± 4% -78.09% (p=0.008 n=5+5) |
||
---|---|---|
_examples | ||
etcs | ||
transforms | ||
vendor/github.com/nfnt/resize | ||
.gitignore | ||
.travis.yml | ||
AUTHORS.md | ||
CODEOWNERS | ||
doc.go | ||
Gopkg.lock | ||
Gopkg.toml | ||
hashcompute_test.go | ||
hashcompute.go | ||
imagehash18.go | ||
imagehash19.go | ||
imagehash_test.go | ||
imagehash.go | ||
LICENSE | ||
README.md |
goimagehash
Inspired by imagehash
A image hashing library written in Go. ImageHash supports:
Only support 64bits hash.
Installation
go get github.com/corona10/goimagehash
Special thanks to
Usage
func main() {
file1, _ := os.Open("sample1.jpg")
file2, _ := os.Open("sample2.jpg")
defer file1.Close()
defer file2.Close()
img1, _ := jpeg.Decode(file1)
img2, _ := jpeg.Decode(file2)
hash1, _ := goimagehash.AverageHash(img1)
hash2, _ := goimagehash.AverageHash(img2)
distance, _ := hash1.Distance(hash2)
fmt.Printf("Distance between images: %v\n", distance)
hash1, _ = goimagehash.DifferenceHash(img1)
hash2, _ = goimagehash.DifferenceHash(img2)
distance, _ = hash1.Distance(hash2)
fmt.Printf("Distance between images: %v\n", distance)
}