Несколько дней назад я увидел статью о работе Python+selenium+Super Eagle на коде проверки слайдера.Общая идея такова:
1. Сделайте снимок экрана с проверочным кодом слайдера.
2. Используйте API Super Eagle для обработки изображения,
3. Вернуть расстояние ползунка
Я тоже давно столкнулся с подобной потребностью.В то время мой друг написал для меня код, который использовал PIL для анализа точек пикселей двух изображений, чтобы вернуть точки пикселей оси x двух картинки.
Например, у меня есть две картинки:
Эти две картинки совершенно одинаковые.Я намеренно нарисовал цифровой дисплей на второй картинке.Теперь мне нужно узнать длину оси x, сравнивая первую картинку со второй картинкой.
Хорошо, без лишних слов, давайте начнем часть кода
библиотека
Установить
Подушка
pip установить подушку
Конкретная реализация выглядит следующим образом (Wen Xin Yi Yan Annotation):
Что делает этот код, так это вычисляет сходство двух изображений и возвращает x-координату первого несовпадающего пикселя.
1. Импортировать Imageмодуль, входящий PIL (Python Imaging Library)в состав и используемый для обработки изображений.
2. get_gapОпределена названная функция, которая принимает два объекта-изображения image1и image2в качестве параметров вычисляет сходство между двумя изображениями.
3. В get_gapфункции * определяется и инициализируется значением 0 переменная left, которая используется для записи x-координаты несовпадающего пикселя.
4. Используйте два слоя циклов для обхода image1каждого пикселя и сравнения image2, равен ли он пикселю в соответствующей позиции.
5. Если два пикселя не равны, вызовите is_pixel_equalфункцию, чтобы определить, похожи ли два пикселя.
6. is_pixel_equalФункция принимает два объекта изображения image1и image2, и сравниваемые координаты пикселей (x, y).
7. В is_pixel_equalфункции ** получить значения цвета двух пикселей через image1.load()[x, y]и **.image2.load()[x, y]
8. Определено пороговое значение thresholdдля оценки сходства двух пикселей.
9. Если значения RGB двух пикселей равны в пределах порогового диапазона, вернуть * True*, указывая, что два пикселя похожи, в противном случае вернуть False.
10 В основной функции img_cvиспользуйте , чтобы Image.openоткрыть два файла изображений 'temp_img1.png'и 'temp_img2.png', и назначить их переменным img1_и соответственно img2_.
11. Вызвать функцию * get_gap*, передать в качестве параметров img1_и img2_, получить сходство между двумя изображениями и присвоить координату x несовпадающего пикселя переменной x_pos.
12. Наконец, используйте printprint для вызова img_cvвозвращаемого значения функции, которое является координатой x несовпадающего пикселя.
Следует отметить, что этот код предполагает, что два изображения имеют одинаковый размер и сравниваются, начиная с левого верхнего угла. Если вам нужно сравнить изображения разных размеров или начать сравнение из другого места, вам необходимо изменить его соответствующим образом.
Давайте посмотрим перед запуском кода, приблизительный пиксель примерно 1063-1625=38.
Инструмент измерения, используемый на картинке, — это Snipaste, который был представлен ранее: нажмите на меня