import numpy as np
from cv2 import cv2


img = cv2.imread('img/taj_mahal.jpg')

#convertiremos la imagen a escala de grises
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#detectaremos los bordes
edges = cv2.Canny(gray, 50, 150, apertureSize=3)

#edges , la imagen binaria con los bordes encontrados
lines = cv2.HoughLines(edges, 1, np.pi / 170, 290)

#rho ρ, representan la distancia de la perpendicular de la recta al punto de origen
#theta Θ, el ángulo de rotación de la perpendicular

for line in lines:
    rho,theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a * rho
    y0 = b * rho

    x1 = int(x0 + 1000 * (-b))
    y1 = int(y0 + 1000 * (a))
    x2 = int(x0 - 1000 * (-b))
    y2 = int(y0 - 1000 * (a))

    cv2.line(img, (x1,y1), (x2, y2), (0,0,255), 2)

cv2.imshow('image', img)

k = cv2.waitKey(0)
cv2.destroyAllWindows()


