Billiárdgolyók kijelölése
Az alábbi példában áttekintjük, hogy hogyan lehet köröket meghatározni a képeken. Ez a feladat olyan szempontból nehéz, hogy nem könnyű megmondani a keresett körök sugarát. A HoughCircles() függvény paramétereként megadható a minimális és maximális sugár, ezáltal beszűkíthető a keresési tér.
- Nyissuk meg a képet!
- Konvertáljuk a képet szürkeárnyalatossá!
- Canny éldetektorral keressünk a képen éleket.
- A HoughCircles() függvénnyel keressünk a képen köröket!
- Rajzoljuk rá a köröket a képre.
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 = "../pool.jpg"
OUTPUT_IMAGE = "circles.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ó
circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, 2, 50, minRadius=0, maxRadius=80)
for c in circles[0,:]:
cv2.circle(img,(c[0],c[1]),c[2],(0,255,0),5)
cv2.imwrite(OUTPUT_IMAGE, img)