Egyenesek detektálása
Detektáljunk egyeneseket Hough transzformációval és rajzoljuk ki a képre!
- Nyissuk meg a képet!
- Konvertáljuk szürkeárnyalatossá az RGB képet!
- Keressünk éleket a képen Canny éldetektorral
- Keressünk egyeneseket az élképen a HoughLines() függvénnyel!
- Rajzoljuk ki az egyeneseket!
A példában az alábbi képet használtuk:
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
## é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)
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)