Encontrando imagem dentro de outra imagem usando Python e OpenCV
- #Python
Com o Python, é possível localizar imagens dentro de outras imagens, ultilizando a biblioteca do OpenCV e Numpy!
Para começar é necessário instalar o OpenCV e o Numpy
pip install opencv-python ; pip install opencv-contrib-python ; pip install numpy
Depois de instalar as bibliotecas, importe as mesmas para o código
import numpy as np
import cv2
Para continuar é necessário adicionar duas variáveis, uma para a imagem principal, e outra para imagem que você quer encontrar dentro dessa imagem principal.
Abaixo as imagens foram definidas com duas variáveis diferentes, uma para a imagem principal, a outra o template.
big_image = cv2.imread("2023-Lotus-Emira-001-2160-1446x813.jpg")
small_image = cv2.imread("2023-Lotus-Emira-001-2160-1446x813(1).jpg")
Depois disso definimos o width e height da nossa marcação.
w, h = small_image.shape[:-1]
Com as variáveis definidas, chamamos as funções do OpenCV para localizar nossa imagem.
res = cv2.matchTemplate(big_image, small_image, cv2.TM_CCOEFF_NORMED)
Definimos também um valor para o quão as imagens se parecem por assim dizer.
threshold = 0.8
Localizamos aquele nosso template.
loc = np.where(res >= threshold)
E finalizando, desenhamos nosso retângulo na imagem, onde se encontra o nosso template
for pt in zip(*loc[::-1]):
cv2.rectangle(big_image, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
Depois só salvar a imagem com o nome que você quiser!
cv2.imwrite("resultado.png", big_image)
Façam os testes de vocês e se divirtam! As possibilidades são infinitas!