@Dimka5458

Определение по картинке?

Хотел бы узнать возможно ли это вообще?
Хочу написать скрипт, который сравнивает картинку на экране со скриншотом, если они одинаковы, то скрипт продолжается, иначе break.
Если такое сделать сложно можно ли сделать так, чтобы питон распознавал текст на экране (например, «введите пароль») и если в тексте есть слово “пароль», то скрипт идет дальше, иначе break
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 2
@FCKJesus
По поводу сравнения картинок
from skimage.metrics import structural_similarity
import cv2

def orb_sim(img1, img2):
  orb = cv2.ORB_create()
  kp_a, desc_a = orb.detectAndCompute(img1, None)
  kp_b, desc_b = orb.detectAndCompute(img2, None)
  bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)

  matches = bf.match(desc_a, desc_b)
  similar_regions = [i for i in matches if i.distance < 50]  
  if len(matches) == 0:
    return 0
  return len(similar_regions) / len(matches)


img1 = cv2.imread('test_img1.jpg', 0)
img2 = cv2.imread('test_img2.jpg', 0)
orb_similarity = orb_sim(img1, img2)
print(f"Фото схожи на:  {orb_similarity}")

Код достаточно хорошо работает с необработанными изображениями.
И по поводу распознавания текста, конечно можно, полно уже готовых решений, OpenCV и Гугл в помощь
Ответ написан
Комментировать
@Kash_Tan
Проверить одинаковые ли картинки можно с помощью Pillow
Код
from PIL import Image

#Открываем картинки

img1 = Image.open("img1.png")
img2 = Image.open("img2.png")

def same_imgs(img1, img2):
    size1 = img1.size #Получаем размер картинки (ширина, высота)
    pixels1 = []
    for x in range(size1[0]):
        for y in range(size1[1]):
            pixels1.append(img1.getpixel((x, y))) #Добавляем цвета по каждой координате

    size2 = img2.size #Получаем размер картинки (ширина, высота)
    pixels2 = []
    for x in range(size2[0]):
        for y in range(size2[1]):
            pixels2.append(img2.getpixel((x, y))) #Добавляем цвета по каждой координате

    if pixels1 == pixels2: #Проверяем равны ли все цвета
        return True
    else:
        return False

print(same_imgs(img1, img2))

img1.close()
img2.close()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы