Te1moFernandes / PSA-P2-G3

Example for pratical class
GNU General Public License v3.0
0 stars 0 forks source link

Ler imagem do Google #15

Closed Te1moFernandes closed 2 years ago

Te1moFernandes commented 2 years ago

Criar um script python para, lendo uma imagem de estrada retirada do google do disco local, decidir para onde virar e mostrar esta decisão ao utilizador

Te1moFernandes commented 2 years ago

Boa noite professor @miguelriemoliveira , ao tentar cortar a imagem para a reconhecer mais facilmente, deparei-me com este erro acerca do cv2 no terminal:

` File "readroad.py", line 45, in main() File "readroad.py", line 37, in main cropped_image = region_of_interest(image, np.array([region_of_interest_vertices, np.int32])) File "readroad.py", line 33, in region_of_interest cv2.fillPoly(mask, vertices, match_mask_color) cv2.error: OpenCV(4.5.4) :-1: error: (-5:Bad argument) in function 'fillPoly'

Overload resolution failed:

  • Can't parse 'pts'. Sequence item with index 0 has a wrong type
  • Can't parse 'pts'. Sequence item with index 0 has a wrong type

Ao fim de uma pesquisa encontrei soluções tais como meter em integral (int()) as parcelas do tuplo da imagem mas também não funciona, consegue ajudar?

O código vai segue-se em baixo:

`# read image image = cv2.imread("road.png") image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

print image

print('This image is:', type(image), 'with dimensions:', image.shape)

celulas da função shape, primeira altura, segunda largura, terceira, profundidade/canais de cor

height = image.shape[0]
width = image.shape[1]

region_of_interest_vertices = [
    (0, height),
    (width/2, height/2),
    (width, height)
]

def region_of_interest(img, vertices):
    mask = np.zeros_like(img)
    channel_count = img.shape[2]
    match_mask_color = (255,) * channel_count
    cv2.fillPoly(mask, vertices, match_mask_color)
    masked_image = cv2.bitwise_and(img, mask)
    return masked_image

cropped_image = region_of_interest(image, np.array([region_of_interest_vertices, np.int32]))

show the image

if you wanted to show a single color channel image called 'gray', for example, call as plt.imshow(gray, cmap='gray')

plt.imshow(cropped_image)
plt.show()

`

Te1moFernandes commented 2 years ago

https://www.youtube.com/watch?v=eLTLtUVuuy4 Guia fantástico!!

Te1moFernandes commented 2 years ago

Resolvido.

miguelriemoliveira commented 2 years ago

Oi @Te1moFernandes ,

desculpe não ter tido tempo de ver antes. Ainda bem que está resolvido.

Abraço, Miguel

Te1moFernandes commented 2 years ago

Sem problema professor, encontrei um guia e o erro tinha a ver com o método de Gauss (se não me engano no nome) que basicamente pensa apriori que ha mais do que um poligono na máscara mas como neste caso é apenas um, tive que meter mais uns parentes no tuplo (qualquer coisa assim :') )

Basicamente era um erro na linguagem de arrays e não no código em si.

@miguelriemoliveira