У меня есть эталонное изображение, которое я хочу сопоставить на скриншоте.Это часть скриншота, поэтому она обязательно должна совпадать.
Изображение для поиска:> <</p>
Полный снимок экрана:
Итак, с OpenCV pyscreeze сопоставляет изображения, подобные этим:
# get all matches at once, credit: /7111135/nahozhdenie-izobrazheniya-vnutri-izobrazheniya-numpy#7111156
result = cv2.matchTemplate(haystackImage, needleImage, cv2.TM_CCOEFF_NORMED)
match_indices = numpy.arange(result.size)[(result > confidence).flatten()]
matches = numpy.unravel_index(match_indices[:limit], result.shape)
некоторые тесты:
opencv + numpy confidence 1.0: 0 matches
first ten: []
Bench passed in 0.205 seconds
opencv + numpy confidence default (0.999): 1795428 matches
first ten: [(0, 0, 13, 13), (1, 0, 13, 13), (2, 0, 13, 13), (3, 0, 13, 13), (4, 0, 13, 13), (5, 0, 13, 13), (6, 0, 13, 13), (7, 0, 13, 13), (8, 0, 13, 13), (9, 0, 13, 13)]
Bench passed in 0.852 seconds
pure python method: 6690 matches
first ten: [(1855, 208, 13, 13), (1856, 208, 13, 13), (1857, 208, 13, 13), (1858, 208, 13, 13), (1859, 208, 13, 13), (1860, 208, 13, 13), (1861, 208, 13, 13), (1862, 208, 13, 13), (1863, 208, 13, 13), (1864, 208, 13, 13)]
Bench passed in 1.344 seconds
Я играл с уверенностью, соответствуя методам, но с OpenCV результаты такие же.Он соответствует каждому пикселю или не соответствует всему.
Чистый метод python от pyscreeze дает наиболее правильные результаты - он правильно сопоставляет изображения.
Может быть, мне не нужно что-то вроде OpenCV, чтобы соответствовать частиСкриншот?Но чистый питон медленнее в 5-10 раз.