File size: 1,074 Bytes
ca7217f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package imageutil
import (
"image"
"github.com/corona10/goimagehash"
)
const (
thAverageHash = 6
thDifferenceHash = 5
thPerceptionHash = 6
)
func AverageHashDistance(imgA, imgB image.Image) (distance int) {
hashA, _ := goimagehash.AverageHash(imgA)
hashB, _ := goimagehash.AverageHash(imgB)
distance, _ = hashA.Distance(hashB)
return
}
func DifferenceHashDistance(imgA, imgB image.Image) (distance int) {
hashA, _ := goimagehash.DifferenceHash(imgA)
hashB, _ := goimagehash.DifferenceHash(imgB)
distance, _ = hashA.Distance(hashB)
return
}
func PerceptionHashDistance(imgA, imgB image.Image) (distance int) {
hashA, _ := goimagehash.PerceptionHash(imgA)
hashB, _ := goimagehash.PerceptionHash(imgB)
distance, _ = hashA.Distance(hashB)
return
}
func Similar(imgA, imgB image.Image) bool {
switch {
case AverageHashDistance(imgA, imgB) < thAverageHash:
return true
case DifferenceHashDistance(imgA, imgB) < thDifferenceHash:
return true
case PerceptionHashDistance(imgA, imgB) < thPerceptionHash:
return true
default:
return false
}
}
|