import cv2 import numpy as np import math ## kép megnyitása INPUT_IMAGE = "../Chessboard_002.jpg" OUTPUT_IMAGE = "lines.png" HOUGH_IMAGE = "HOUGH_lines.png" img = cv2.imread(INPUT_IMAGE) gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ## képméret lekérdezése h,w = gray_img.shape ## Hough kép előkészítése #hough_img = np.zeros((2*max(h,w)+2,360+2,3), dtype=np.int) ## élek kijelölése edges = cv2.Canny(gray_img, 50, 15, apertureSize=3) ## Hough transzformáció lines = cv2.HoughLines(edges, 1,np.pi/180, 200) for l in lines: r = l[0,0] theta = l[0,1] print(r, theta, max(h,w)+int(r), int(math.degrees(theta))+180) #hough_img[max(h,w)+int(r)][int(math.degrees(theta))+180] = 255 # cv2.circle(hough_img, (int(math.degrees(theta))+180, max(h,w)+int(r)),10, (255,255,255), -1) a = np.cos(theta) b = np.sin(theta) x0 = a * r; y0 = b * r; 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), 5) cv2.imwrite(OUTPUT_IMAGE, img) #cv2.imwrite(HOUGH_IMAGE, hough_img)