В пакете go image, я не вижу методов, которые можно использовать для сравнения двух изображений? Можно ли сравнивать изображение в go, похожее на ImageMagick?Как сравнить изображения с go?
2
A
ответ
1
Если вы пытаетесь сравнить два изображения и просто нужно сварить их до одного числа, будет работать следующее. Это полезно (например) генетических алгоритмов, в которых вы хотите сравнить набор кандидатов и выбрать тот, который отличается по меньшей мере от эталонного изображения:
- Посетите каждый пиксель, разбить его на части: R, G, B, & A (in go:
image.At(x,y).RGBA()
) - Вычитайте VGB-данные из соответствующих пикселей пикселов в эталонном изображении.
- Площадь различия, добавить их.
- Возьмите квадратный корень из общей суммы.
Это число даст вам приблизительное представление о том, как сильно отличаются изображения.
Если вы знаете, что оба изображения являются экземплярами image.RGBA
(или вы можете их преобразовать), то вы можете сделать что-то еще быстрее: просто возьмите байты непосредственно с RGBA.Pix
. Это то, что я здесь, и это примерно в 10 раз быстрее, чем делать img.At(x,y).RGBA()
для каждого пикселя пары:
func FastCompare(img1, img2 *image.RGBA) (int64, error) {
if img1.Bounds() != img2.Bounds() {
return 0, fmt.Errorf("image bounds not equal: %+v, %+v", img1.Bounds(), img2.Bounds())
}
accumError := int64(0)
for i := 0; i < len(img1.Pix); i++ {
accumError += int64(sqDiffUInt8(img1.Pix[i], img2.Pix[i]))
}
return int64(math.Sqrt(float64(accumError))), nil
}
func sqDiffUInt8(x, y uint8) uint64 {
d := uint64(x) - uint64(y)
return d * d
}
Смежные вопросы
- 1. Сравнить значения функций в Go
- 2. Как сравнить 2 функции в Go?
- 3. Как сравнить два изображения?
- 4. Go изображения нарисовать квадрат
- 5. ImageMagick сравнить изображения с API?
- 6. Как сравнить два изображения с iphone sdk?
- 7. Как сравнить два изображения с разными?
- 8. Как сравнить изображения не только с гистограммой?
- 9. Как сравнить два изображения с использованием Selenium
- 10. Как сравнить два изображения с помощью Node.js
- 11. Как сравнить объекты изображения с C# .NET?
- 12. Простой Добавить в сравнение и сравнить GO
- 13. сравнить размеры изображения asp.net
- 14. Сравнить изображения в SQL
- 15. Сравнить изображения в Android
- 16. Go: сравнить два временных структур с учетом только даты
- 17. Как сравнить строку с столбцом?
- 18. сравнить два изображения с низким качеством
- 19. скрытый массив пикселей с изображения окрашивать сравнить
- 20. Как сравнить два изображения в Robot Framework
- 21. Как сравнить два изображения в rails3
- 22. Python 2.7 - Как сравнить два изображения?
- 23. Как сравнить 2 изображения, игнорируя области
- 24. Как сравнить два изображения в Java?
- 25. сравнить два изображения в android
- 26. Как сравнить два изображения uisng vb.net?
- 27. Сравнить изображения и удалять дубликаты
- 28. graphicsmagic сравнить непрозрачность дифф изображения
- 29. Сравнить 2 изображения с помощью C#
- 30. Сравнить изображения, чтобы найти отличия
может быть, это поможет вам: http://codereview.stackexchange.com/questions/12700/comparing-two-images –
Я пробовал этот подход, используя Resemble.js, и был медленным. Есть ли способ узнать процентные различия между изображениями? – degendra
Стандартная библиотека не содержит такого кода, вам нужно будет выполнить некоторое программирование. – Volker