1
resposta

pontos_chaves na função drawKeypoints

Considerando o seguinte trecho:

def get_descritores(img_caminho):

    LARGURA = 360
    ALTURA = 360

    # Ler a imgem
    img_teste = cv2.imread(img_caminho, 0)

    #Redimensionar
    img_redimensionada = cv2.resize(img_teste, (LARGURA, ALTURA), interpolation=cv2.INTER_CUBIC)

    # Remover ruídos
    img_equalizada = cv2.equalizeHist(img_redimensionada)
    img_suavizada = cv2.GaussianBlur(img_equalizada, (9,9), 1)

    #Detectar pontos chaves
    orb = cv2.ORB_create(nfeatures=512)
    pontos_chave = orb.detect(img_suavizada, None)

    pontos_chave, descritores = orb.compute(img_suavizada, pontos_chave)

    return descritores

"""- ORB - Oriented FAST and Ratated BRIEF
- SURF - Speeded up robust features
- SIFT - Scale-invariant feature transform
"""

descritor = get_descritores(img_caminho)

print("Tipo: ", type(descritor))
print("Formato descritor : ", descritor.shape)
print("\n descritor[0]: ", descritor[0])

img_pontos = cv2.drawKeypoints(img_suavizada, pontos_chave, outImage = np.array([]), flags=0)
cv2_imshow(img_pontos)

A variável "pontos_chaves" não está mais disponível , anão ser se na função "get_descritores" retornemos "pontos_chaves". Certo? ou estou esquecendo algo? Porque caso seja isso mesmo, a função drawKeypoints não vai rodar e é preciso mudar lá no curso/github.

1 resposta

Olá parismollochristondis, tudo bem ?

Desculpa pela demora no retorno.

Você está correto, o notebook atualmente está com a váriavel pontos_chave inacessível, o que aconteceu foi que o instrutor optou por "reciclar" a função get_descritores quando foi trabalhar com os descritores.

Vamos modificar o notebook do GitHub para que tenha as duas versões da função.

def get_descritores(img_caminho):

    LARGURA = 360
    ALTURA = 360

    # Ler a imgem
    img_teste = cv2.imread(img_caminho, 0)

    #Redimensionar
    img_redimensionada = cv2.resize(img_teste, (LARGURA, ALTURA), interpolation=cv2.INTER_CUBIC)

    # Remover ruídos
    img_equalizada = cv2.equalizeHist(img_redimensionada)
    img_suavizada = cv2.GaussianBlur(img_equalizada, (9,9), 1)

    #Detectar pontos chaves
    orb = cv2.ORB_create(nfeatures=512)
    pontos_chave = orb.detect(img_suavizada, None)

    return pontos_chave, img_suavizada

Espero ter ajudado e qualquer dúvida não hesite em perguntar.

Bons Estudos :)