Как распознать заранее известный объект на картинке, на python?
можете подсказать библиотеку или написать не большой код (желательно с комментариями), который будет определять заранее известный объект на картинке. То есть, я сохраняю в папку не большой скрин иконки, которую нужно найти, а программа берёт полное изображение экрана, находит объект и выводит: объект найден.
Попробовал написать так код, но, как я понял, работать он не собирается:
from pixellib.instance import instance_segmentation
def item_detect():
item_image = instance_segmentation()
item_image.load_model('C:/Users/+++/Desktop/lp/programms/EFT items/X.png') # скрин, который нужно найти
item_image.segmentImage(
image_path='D.png' # скрин, на котором нужно найти
)
print('1')
def main():
item_detect()
if __name__ == '__main__':
main()
За фиговый код не бейте палками ), я новичёк.
После исправления, я написал другой код (он работает корректно):
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
# 2. Сопоставьте несколько объектов
img_rgb = cv.imread('D1.PNG') # скрин, на котором ищём
img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
template = cv.imread('X.PNG', 0) # а тут, то ,что ищем
h, w = template.shape[:2]
res = cv.matchTemplate(img_gray, template, cv.TM_CCOEFF_NORMED)
threshold = 0.8
# Возьмем координаты со степенью совпадения больше% 80
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]): # * Обозначает необязательные параметры
bottom_right = (pt[0] + w, pt[1] + h)
cv.rectangle(img_rgb, pt, bottom_right, (0, 0, 255), 2)
cv.imshow('img_rgb', img_rgb)
print('Объект найден')
cv.waitKey(0)
cv.destroyAllWindows()

