霍夫变换
import cv2
import numpy as np
img = cv2.imread(“shape.png”)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edge = cv2.Canny(gray,50,150)
lines = cv2.HoughLines(edge,1,np.pi/180,50)
for line in lines:
rho, theta = line[0]
a = np.cos(theta)
b = np.sin(theta)
x0 = rho *a
y0 = rho *b
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,255,0),2)
cv2.imshow(“np”,img)
cv2.imshow(“gray”,gray)
cv2.imshow(“edges”,edge)
cv2.waitKey(0)
cv2.destroyAllWindows()
显示效果